我正在处理Doug Hellmann教程中有关多处理的以下示例:
import multiprocessing def worker(): """worker function""" print 'Worker' return if __name__ == '__main__': jobs = [] for i in range(5): p = multiprocessing.Process(target=worker) jobs.append(p) p.start()
当我尝试在if语句之外运行它时:
import multiprocessing def worker(): """worker function""" print 'Worker' return jobs = [] for i in range(5): p = multiprocessing.Process(target=worker) jobs.append(p) p.start()
它不停地开始生成进程,而阻止它的唯一方法就是重新启动!
为什么会这样?为什么它没有生成5个进程并退出?为什么需要if语句?
在Windows上没有fork()例程,因此请multiprocessing导入当前模块以访问该worker功能。没有该if语句,子进程将启动自己的子进程,依此类推。
fork()
multiprocessing
worker
if