参考视频:莫烦python https://mofanpy.com/tutorials/python-basic/multiprocessing/why/

1.创建进程

# -*- coding: utf-8 -*-
 
import multiprocessing as mp
import threading as td
 
 
def job(a,b):
    print('hhhh')
 
    
if __name__=="__main__":
    #t1 = td.Thread(target=job,args=(1,2))
    p1 = mp.Process(target=job,args=(1,2))
 
    p1.start()
    p1.join()
    
    #t1.start()
    #t1.join()

2. queue 进程输出

# -*- coding: utf-8 -*-
 
import multiprocessing as mp
import threading as td
 
 
def job(q):
    res = 0
    for i in range(10):
        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",res1)
    print("res2",res1)

res1 2355
res2 2355


3. 多线程和多进程效率对比

# -*- coding: utf-8 -*-
 
import multiprocessing as mp
import threading as td
import time
from queue import Queue
 
def job(q):
    res = 0
    for i in range(10000000):
        res += i+i**2+i**3
    q.put(res)#queue
 
def multcore():
    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("multiprocess:",res1+res2) 
    
def multicore():
    q = 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(10000000):
            res += i+i**2+i**3
    print("normal:",res)
 
if __name__=="__main__":
    st = time.time()
    normal()
    st1 = time.time()
    print('normal time:', st1 - st)
    multicore()
    st2 = time.time()
    print('multithread time:', st2 - st1)
    multicore()
    print('multicore time:', time.time() - st2)

normal: 4999999666666716666660000000
normal time: 13.963502645492554
multithread: 4999999666666716666660000000
multithread time: 14.728559017181396
multithread: 4999999666666716666660000000
multicore time: 13.920192003250122