AttributeError: module ‘os’ has no attribute ‘fork’ 原因与解决方法

今天在看Python多进程的时候,在Windows上运行Python代码的时候,出现了如下错误:

AttributeError: module 'os' has no attribute 'fork'

中文翻译

AttributeError:模块“ os”没有属性“ fork”

AttributeError: module 'os' has no attribute 'fork'

 

而我直接在Linux上运行,却又不会出现这个错误,如下图:

Linux python os.fork()

 

经过一番资料查找,到了具体的原因,如下:

由于Windows没有fork调用,上面的代码在Windows上无法运行。因此,建议 os.fork() 不要在windows系统上用。

如果想要有fork调用,推荐大家用Unix/Linux或mac系统的电脑。

 

解决方法

由于Windows没有fork调用,难道在Windows上无法用Python编写多进程的程序?无法调用fork吗?

答案肯定是:NO!

 

windows下可以使用multiproessing代替os.fork功能。

 

由于Python是跨平台的,自然也应该提供一个跨平台的多进程支持。multiprocessing模块就是跨平台版本的多进程模块。

 

multiprocessing模块提供了一个Process类来代表一个进程对象,下面的例子演示了启动一个子进程并等待其结束:

from multiprocessing import Process
import os

def run_proc(name):
    print('运行子进程%s(%s)......'%(name,os.getpid()))

if __name__ == '__main__':
    print('父进程%s'%os.getpid())
    p = Process(target=run_proc,args=('test',))
    print('子进程将开始')
    p.start()
    p.join()
    print('子进程结束')

运行结果:

父进程12968

子进程将开始

运行子进程test(2476)......

子进程结束

 

创建子进程时,只需要传入一个执行函数和函数的参数,创建一个Process实例,用start()方法启动,这样创建进程比fork()还要简单。

join()方法可以等待子进程结束后再继续往下运行,通常用于进程间的同步。

    A+
发布日期:2019年10月05日 14:54:36  所属分类:Python
最后更新时间:2019-10-05 14:56:56
评分: (1 票;平均数5.00 ;最高评分 5 ;用户总数1;总得分 5;百分比100.00)
付杰
SEO顾问服务 中小型网站 单站/最低99.9元 全方位优化
SEO顾问服务 中小型网站 单站/最低99.9元 全方位优化
  • ¥ 99.9元
  • 市场价:5000元
刷流量、刷人气、刷点击、刷收藏、刷APP关键词服务
刷流量、刷人气、刷点击、刷收藏、刷APP关键词服务
  • ¥ 1.0元
  • 市场价:9.9元
服务器管理面板/主机控制面板“安装”服务
服务器管理面板/主机控制面板“安装”服务
  • ¥ 9.9元
  • 市场价:49.9元
wp discux 帝国 dedecms phpcms等快速建站
wp discux 帝国 dedecms phpcms等快速建站
  • ¥ 99.9元
  • 市场价:499.9元

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: