python多執行緒與多程序的選擇,以及優劣勢
阿新 • • 發佈:2019-02-01
多執行緒用於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))