1. 程式人生 > >python多執行緒與多程序的選擇,以及優劣勢

python多執行緒與多程序的選擇,以及優劣勢

多執行緒用於IO密集型,如socket,爬蟲,web
多程序用於計算密集型,如金融分析

如果四個任務是計算密集型,多核意味著平行計算,在python中一個程序中同一時刻只有一個執行緒執行用不上多核,方案一勝
如果四個任務是I/O密集型,再多的核也解決不了I/O問題,方案二勝

守如果併發的多個任務是計算密集型:多程序效率高

from multiprocessing import Process
from threading import Thread
import os,time
def work():
    res=0
    for i in range(100000000
): res*=i if __name__ == '__main__': l=[] cpu = os.cpu_count() print(os.cpu_count()) #本機為4核 start=time.time() for i in range(cpu): p=Process(target=work) #耗時5s多 p=Thread(target=work) #耗時18s多 l.append(p) p.start() for p in l: p.join() stop=time.time() print('run time is %s'
%(stop-start))

如果併發的多個任務是I/O密集型:多執行緒效率高

from multiprocessing import Process
from threading import Thread
import threading
import os,time
def work():
    time.sleep(2)
    print('===>')

if __name__ == '__main__':
    l=[]
    print(os.cpu_count()) #本機為4核
    start=time.time()
    for i in range(400
): # p=Process(target=work) #耗時12s多,大部分時間耗費在建立程序上 p=Thread(target=work) #耗時2s多 l.append(p) p.start() for p in l: p.join() stop=time.time() print('run time is %s' %(stop-start))