有以下简单的代码:
from multiprocessing import Process, freeze_support
def foo():
print 'hello'
if __name__ == '__main__':
freeze_support()
p = Process(target=foo)
p.start()
它在Linux或带Python 3.3的Windows上运行良好,但在带Python 2.7的Windows上运行失败。
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "c:\Python27\lib\multiprocessing\forking.py", line 346, in main
prepare(preparation_data)
File "c:\Python27\lib\multiprocessing\forking.py", line 454, in prepare
assert main_name not in sys.modules, main_name
AssertionError: thread
一般来说,我尝试过的所有多处理示例在该设置上均失败。为什么?
最佳答案
这是一个已知的错误:
http://bugs.python.org/issue10845
不知道这是否会移植到2.7.X。
关于Windows上的Python 2.7,所有多处理示例均使用 "assert main_name not in sys.modules, main_name",我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16405687/