小编典典

多处理炸弹

python

我正在处理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语句?


阅读 234

收藏
2020-12-20

共1个答案

小编典典

在Windows上没有fork()例程,因此请multiprocessing导入当前模块以访问该worker功能。没有该if语句,子进程将启动自己的子进程,依此类推。

2020-12-20