多进程 Multiprocessing 和多线程 threading 类似,Multiprocessing就是用来弥补 threading 的一些劣势, 比如GIL。
导入线程、进程标准模块
import multiprocessing as mp
import threading as td
定义一个被线程和进程调用的函数
def job(a,d):
print('aaaaa')
创建线程和进程
t1 = td.Thread(target=job,args=(1,2))
p1 = mp.Process(target=job,args=(1,2))
分别启动线程和进程
t1.start()
p1.start()
t1.join()
p1.join()
线程和进程的使用方法相似
添加main函数
import multiprocessing as mp
def job(a,d):
print(‘aaaaa’)
if name==’main‘:
p1 = mp.Process(target=job,args=(1,2))
p1.start()
p1.join()
Queue
Queue允许多个进程放入,多个进程从队列取出对象。Queue使用mutiprocessing.Queue(maxsize)创建,maxsize表示队列中可以存放对象的最大数量。
例子
import multiprocessing as mp
def job(q):
res = 0
for i in range(1000):
res += i+i**2+i**3
q.put(res) # queue
if name == ‘main‘:
q = mp.Queue()
p1 = mp.Process(target=job, args=(q,))
p2 = mp.Process(target=job, args=(q,))
p1.start()
p2.start()
p1.join()
p2.join()
res1 = q.get()
res2 = q.get()
print(res1+res2)