Python 多进程完全无法工作

4 投票
3 回答
11062 浏览
提问于 2025-04-17 18:04

我运行了下面的代码,但真的没有任何反应。Python好像完成了所有的操作(也许确实完成了),但是没有任何输出。希望能得到一些帮助,让这个代码能正常工作!

import multiprocessing

def worker(number):
    print number
    return

if __name__ == '__main__':
    test = multiprocessing.Process(target=worker, args=[0,1,2,3,4])
    test.start()

3 个回答

0

你的代码在我运行的时候出现了错误。因为参数是用逗号分开的,所以你需要说明整个数组是一个单独的参数。

import multiprocessing

def worker(number):
    print number
    return

if __name__ == '__main__':
    test = multiprocessing.Process(target=worker, args=([0,1,2,3,4],))
    test.start()
    test.join()

另外,别忘了在最后加入这个过程。

0

你的代码试图在一个新进程中运行 worker(0,1,2,3,4)。如果你想要在多个进程中同时执行 worker() 函数:

from multiprocessing import Pool

def worker(number):
    return number*number

if __name__ == '__main__':
    pool = Pool() # use all available CPUs
    for square in pool.imap(worker, [0,1,2,3,4]):
        print(square)
4

你的代码实际上应该会出错。因为在 multiprocessing.Process() 中的 args 参数并不是为每个参数打开一个新进程,而是把列表中的参数传给一个单独的函数,然后在一个子进程中调用这个函数。如果你想要运行5个独立的实例,你需要这样做:

import multiprocessing

def worker(number):
    print number
    return

if __name__ == '__main__':
    procs = []

    for i in range(5):
        procs.append(multiprocessing.Process(target=worker, args=[i]))

    [proc.start() for proc in procs]

撰写回答