importing and using a module that uses multiprocessing without causing infinite loop on Windows
我有一个名为
1 | if __name__ == '__main__': |
但是,我正试图从另一个脚本将其作为模块导入,并调用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | # multi.py import multiprocessing def test(x): x**=2 def start(): pool = multiprocessing.Pool(processes=multiprocessing.cpu_count()-2) pool.map(test, (i for i in range(1000*1000))) pool.terminate() print('done.') if __name__ == '__main__': print('runs as a script,',__name__) else: print('runs as imported module,',__name__) |
这是我的
1 2 3 | # test.py import multi multi.start() |
型
我不太明白你的要求。您不需要做任何事情来阻止它产生无限多的进程。我刚在WindowsXP上运行它——导入文件并运行
必须执行
编辑:现在我明白你的要求了。你不需要保护
1 2 3 | import multi if __name__=="__main__": multi.start() |
号
主脚本中始终需要"保护"。
型
1 2 3 4 | if __name__ == '__main__': print('runs as a script,',__name__) else: print('runs as imported module,',__name__) |