【发布时间】:2012-12-19 23:11:23
【问题描述】:
我正在为我的初学者学生使用一个库,并且我正在使用 Python 中的多处理模块。我遇到了这个问题:importing and using a module that uses multiprocessing without causing infinite loop on Windows
例如,假设我有一个模块mylibrary.py:
# mylibrary.py
from multiprocessing import Process
class MyProcess(Process):
def run(self):
print "Hello from the new process"
def foo():
p = MyProcess()
p.start()
还有一个调用这个库的主程序:
# main.py
import mylibrary
mylibrary.foo()
如果我在 Windows 上运行 main.py,它会尝试将 main.py 导入新进程,这意味着代码会再次执行,从而导致进程生成的无限循环。我可以这样修复它:
import mylibrary
if __name__ == "__main__":
mylibrary.foo()
但是,这对初学者来说相当混乱,而且似乎没有必要。新进程是在mylibrary中创建的,那为什么新进程不直接导入mylibrary呢?有没有办法解决这个问题而无需更改main.py?
顺便说一下,我使用的是 Python 2.7。
【问题讨论】:
标签: python windows python-2.7 multiprocessing