Python Windows多处理
正如我所发现的,当涉及到多处理时,windows有点像猪,对此我有一些疑问 pydoc声明您应该 这是否意味着只有创建新流程的代码 比如说 脚本1 在这个脚本中,您需要在ifmain中包装它,因为该行正在生成进程。 但是如果你有呢? 脚本2 file1.pyPython Windows多处理,python,windows,multiprocessing,Python,Windows,Multiprocessing,正如我所发现的,当涉及到多处理时,windows有点像猪,对此我有一些疑问 pydoc声明您应该 这是否意味着只有创建新流程的代码 比如说 脚本1 在这个脚本中,您需要在ifmain中包装它,因为该行正在生成进程。 但是如果你有呢? 脚本2 file1.py import file2 if __name__ == '__main__': p = Aclass().start() import multiprocessing ITEM = 0 def method1(): pri
import file2
if __name__ == '__main__':
p = Aclass().start()
import multiprocessing
ITEM = 0
def method1():
print 'method1'
method1()
class Aclass(multiprocessing.Process):
def __init__(self):
print 'Aclass'
super(Aclass, self).__init__()
def run(self):
print 'stuff'
file2.py
import file2
if __name__ == '__main__':
p = Aclass().start()
import multiprocessing
ITEM = 0
def method1():
print 'method1'
method1()
class Aclass(multiprocessing.Process):
def __init__(self):
print 'Aclass'
super(Aclass, self).__init__()
def run(self):
print 'stuff'
在这种情况下需要保护什么?
如果文件2中有if\uuu main\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
注意:我知道代码不会编译。这只是一个例子
pydoc声明在使用多处理时应保护windows应用程序的入口点
我的解释不同:文件说明
新的Python解释器可以安全地导入主模块,而不会产生意外的副作用(例如启动新进程)
因此,导入模块(import mymodule
)不应创建新的进程。也就是说,您可以通过使用
if __name__ == '__main__':
...
因为代码在。。。将仅在程序作为主程序运行时运行,即
python mymodule.py
或者当您将其作为可执行文件运行时,而不是当您导入文件时
因此,要回答您关于文件2
的问题:不,您不需要保护,因为在导入文件2
期间没有启动任何进程
另外,如果在file2.py
中放置if uuuuu name\uuuuu=='\uuuuu main\uuuuu'
,它将不会运行,因为file2
是导入的,而不是作为主程序执行的
编辑:是一个例子,说明了当您不保护创建代码的流程时可能发生的情况:它可能只是循环并创建大量流程