python multiprocessing 不断产生整个脚本
Posted
技术标签:
【中文标题】python multiprocessing 不断产生整个脚本【英文标题】:python multiprocessing keeps spawning the whole script 【发布时间】:2020-07-03 09:17:43 【问题描述】:我无法组织我的脚本以使用多处理。似乎产生了进程,但它一次又一次地执行整个脚本。在这个例子中,它会不断地print("PREPARATION")
。
我认为我的问题在于脚本的组织。
import subprocess as sp
import multiprocessing
def func1():
blah
blah
blah
def func2():
blah
blah
blah
def derev_work(cmd):
proc = sp.run(cmd)
print(proc.stdout)
def main():
print("PREPARATION")
cmd_list = [[path_to_exe, arg1, arg2, arg3] for sheet in sortedsheets]
if __name__=="__main__":
print (multiprocessing.cpu_count())
pool = multiprocessing.Pool(multiprocessing.cpu_count())
results = []
r = pool.map_async(derev_work, cmd_list , callback=results.append)
r.wait()
print(results)
print("COMPLETION")
main()
【问题讨论】:
这能回答你的问题吗? Multiprocessing launching too many instances of Python VM 【参考方案1】:你需要使用
if __name__ == "__main__":
main()
成语。
multiprocessing docs里解释的很清楚:
相反,应该使用
if __name__ == '__main__':
来保护程序的“入口点”,如下所示...
【讨论】:
我没有理解 'if name == "main":' 是“保护”...明白了现在...谢谢! ***.com/questions/1923706/…以上是关于python multiprocessing 不断产生整个脚本的主要内容,如果未能解决你的问题,请参考以下文章
python MultiProcessing模块进程间通信的解惑与回顾
python MultiProcessing标准库使用Queue通信的注意要点
cx_freeze multiprocessing 打包后反复重启