AttributeError: module ‘os’ has no attribute ‘fork

Python 多进程报错

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

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

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

中文翻译

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

?

?

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

?

?

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

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

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

?

解决方法

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

答案肯定是:NO!

?

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

?

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

?

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

?

?

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(‘子进程结束‘)

?

结果:

?

父进程19124
子进程将开始
运行子进程test(19132)......
子进程结束
[Finished in 0.7s]

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

AttributeError: module ‘os’ has no attribute ‘fork

上一篇:IDEA提示:‘for‘、‘while‘ loop replaceable with enhanced ‘for‘


下一篇:使用ssh 通过ProxyCommand:利用跳板机让不在同一局域网的机器ssh直连