文章目录
1.创建进程
import multiprocessing as mp
def job(a):
print('aaaa')
if __name__ == '__main__':
p1 = mp.Process(target=job, args=(1,))
p1.start()
p1.join()
2.queue进程输出
import multiprocessing as mp
def job(q,a):
res = 0
for i in range(a):
res += i
q.put(res)
if __name__ == '__main__':
q = mp.Queue()
p1 = mp.Process(target=job, args=(q,3,))
p2 = mp.Process(target=job, args=(q,2))
p1.start()
p2.start()
p1.join()
p2.join()
res1 = q.get()
res2 = q.get()
p1.close()
p2.close()
print(res1 + res2)
3.效率对比(多线程与多进程)
import multiprocessing as mp
import threading as td
import time
def job(q):
res = 0
for i in range(1000000):
res += i + i**2 + i**3
q.put(res) # queue
def multicore():
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()
p1.close()
p2.close()
res1 = q.get()
res2 = q.get()
print('multicore:',res1 + res2)
def multithread():
q = mp.Queue() # thread可放入process同样的queue中
t1 = td.Thread(target=job, args=(q,))
t2 = td.Thread(target=job, args=(q,))
t1.start()
t2.start()
t1.join()
t2.join()
res1 = q.get()
res2 = q.get()
print('multithread:', res1 + res2)
def normal():
res = 0
for _ in range(2):
for i in range(1000000):
res += i +