python中使用多进程multiprocessing并获取子进程的返回值

python中使用多进程multiprocessing并获取子进程的返回值

Python中的multiprocessing包是一个多进程管理包,可以用来创建多进程。

multiprocessing包下的Queue是多进程安全的队列,我们可以通过该Queue来进行多进程之间的数据传递。

我们可以通过下面这段代码演示多进程的使用,并将每个进程的结果保存到queue中,最后统一进行输出。


import random
import time
import multiprocessing


def worker(name, q):
    t = 0
    for i in range(10):
        print(name + " " + str(i))
        x = random.randint(1, 3)
        t += x
        time.sleep(x * 0.1)
    q.put(t)


q = multiprocessing.Queue()
jobs = []
for i in range(10):
    p = multiprocessing.Process(target=worker, args=(str(i), q))
    jobs.append(p)
    p.start()

for p in jobs:
    p.join()

results = [q.get() for j in jobs]
print(results)

输出结果:

......
6 8
9 8
2 7
1 9
4 9
7 9
6 9
2 8
5 9
9 9
2 9
[17, 18, 18, 18, 18, 19, 20, 20, 20, 22]

Process finished with exit code 0

你可能感兴趣的:(python,python,multiprocessing,多进程)