python中的多執行緒與多程序

2021-08-03 11:32:34 字數 1437 閱讀 5518

對於計算密集型任務來說,將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 程序是作業系統分配資源的最小單元 執行緒是作業系...