對於計算密集型任務來說,將cpu的效率發揮到100%是最理想的情況。而對於io密集型任務來說則不需要占用太多cpu。
單個程序中可以同時啟動多個執行緒,但多個執行緒同時共享同乙個cpu核,所以對於計算密集型任務來說,使用多程序才能將cpu效率發揮至最高
# 多執行緒
from multiprocessing import pool
import os
import time
import numpy as np
defworker
(id):
print
"worker"
for i in range(1000000):
np.sqrt(i**2)
print str(os.getpid())+"\t"+str(id)
print
"end worker"
iters = range(10)
time1 = time.asctime()
pool = pool.threadpool(10)
num = pool.map(worker, iters)
pool.close()
pool.join()
print time1
print time.asctime()
# 多程序
import multiprocessing
import time
import os
import numpy as np
defworker
(id):
print
"worker"
for i in range(1000000):
np.sqrt(i**2)
print str(os.getpid())+"\t"+str(id)
print
"end worker"
if __name__ == "__main__":
pool = multiprocessing.pool(processes=10)
time1 = time.asctime()
nb = range(10)
pool.map(worker, nb)
pool.close()
pool.join()
print time1
print time.asctime()
上面兩個程式唯一的差別在於pool是用multiprocessing.pool.threadpool還是multiprocessing.pool,用後者即實現了多程序。對比時間發現,後乙個程式的執行時間是前乙個時間的cpu數量分之一。
另外,程序啟動數量並非越多越好,這取決於計算機的真正物理核數量,而不是虛擬執行緒數,獲取方式為multiprocessing.cpu_count()/2。
Python 多執行緒與多程序
前言 以前玩單機或者玩小資料集,都基本不用多執行緒或多程序都能基本滿足需求了 所以沒怎麼了解這方面的東西。但現在玩幾百萬甚至上千萬的資料,甚至集群等東西之後,就有必要學習多執行緒或多程序了。在python中首先要匯入相關的模組 import threading as td import multip...
python 多執行緒與多程序
程序與執行緒的區別 程序 應用程式的執行例項,每乙個執行中的程式就是乙個程序 執行緒 程序的組成部分,乙個程序可以擁有多個執行緒 在多執行緒中,會有乙個主線程來完成整個程序從開始到結束的全部操作,而其他的執行緒會在主線程的執行過程中被建立或退出。python景區賣票系統 多執行緒的應用 import...
Python多執行緒與多程序
python多執行緒與多程序 程序 process 和執行緒 thread 是非常抽象的概念,也是程式設計師必需掌握的核心知識!多程序和多執行緒程式設計對於 的併發執行,提公升 效率和縮短執行時間至關重要。程序 process 和執行緒 thread 程序是作業系統分配資源的最小單元 執行緒是作業系...