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