Python 多进程;无限进程
我在主 Python 文件里有一个函数,它可以进行多进程处理,运行得很好;
if __name__ == '__main__':
pool = multiprocessing.Pool(processes=len(directories))
pool.map(worker, directories)
但是,我从另一个文件夹导入了一个 .py 文件,在这个文件里我尝试做同样的事情;
# Main file
import multiprocessing
read_DataFiles.test(os.getcwd())
# Imported file
directories=["x", "x", "x"]
def worker(sample):
File=open('test'+sample+'.bat', 'w')
File.close()
1 == 1
def test(path):
if __name__ == 'read_DataFiles':
pool = multiprocessing.Pool(processes=8)
print pool.map(worker, directories)
可是它并没有停止工作,反而继续创建新的进程。有人能看出我哪里做错了吗?
1 个回答
0
这里的区别主要在于 if __name__ == ...
这一行。在Windows系统上,多进程的处理方式有点像小技巧,它是通过创建新的进程并在每个进程中重新导入代码来工作的。我想你是从另一个模块的最上层调用 test(path)
的。这个函数里的检查 if __name__ == 'read_DataFiles':
是没什么意义的:这个条件总是成立,这就意味着它总是会启动一个新的进程池。你应该做的是在主脚本中使用 if __name__ == '__main__'
,只有在这种情况下才调用 test(path)
。