创建进程,queue进程输出,效率对比multithreading,multiprocessing
import multiprocessing as mp
import threading as td
import time
import threading as td
def job(q):
res = 0
for i in range(1000000):
res += i+i**2+i**3
q.put(res)
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()
res1 = q.get()
res2 = q.get()
print('multicore',res1+res2)
def normal():
res = 0
for _ in range(2):
for i in range(1000000):
res += i+i**2+i**3
print('normal:',res)
def multithread():
q = mp.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('thread:',res1+res2)
if __name__ == '__main__':
st = time.time()
normal()
st1 = time.time()
print('normal time:',st1-st)
multithread()
st2 = time.time()
print('multithread time:',st2-st1)
multicore()
print('mulicore time:',time.time()-st2)
normal: 249999833333583333000000
normal: 499999666667166666000000
normal time: 1.9860470294952393
thread: 499999666667166666000000
multithread time: 1.8247618675231934
multicore 499999666667166666000000
mulicore time: 1.0996429920196533