Python 多程序與多執行緒的應用(二)

2021-10-24 08:49:05 字數 2152 閱讀 1842

上篇部落格中我們提到了使用process這個包來建立程序,除此之外,我們還可以自定義乙個類,繼承process類,通過例項化這個類來例項化乙個新的程序物件,下面請看乙個簡單的例子

import time

from multiprocessing import process

class

lakers_champion

(process)

: n =

3while n >0:

print

("湖人總冠軍"

) time.sleep(1)

n -=

1if __name__ ==

'__main__'

: p = lakers_champion(

) p.start(

) p.join(

)

來看一下執行結果

湖人總冠軍

湖人總冠軍

湖人總冠軍

湖人總冠軍

湖人總冠軍

湖人總冠軍

當我們專案中需要的子程序數量不多時,可以使用process來建立程序或通過繼承process來例項化乙個程序,但是當我們需要成百上千的程序時,再通過這種方法建立程序顯然是低效的,這個時候我們就需要引入新的概念——程序池,在python中可以用到multiprocessing模組提供的pool。

from multiprocessing import pool
初始化pool時, 可以指定⼀個最⼤程序數, 當有新的請求提交到pool中時,如果池還沒有滿, 那麼就會建立⼀個新的程序⽤來執⾏該請求; 但如果池中的程序數已經達到指定的最⼤值, 那麼該請求就會等待, 直到池中有程序結束, 才會建立新的程序來執⾏,我們通過乙個簡單的例子來了解相關的使用方法

from multiprocessing import process, pool

import random

import time

defwork

(num)

:print

(random.random(

)*num)

time.sleep(3)

if __name__ ==

'__main__'

: po = pool(

)# 定義乙個程序池,最大程序數為3,預設大小為cpu核數

for i in

range(10

):(i,)

) po.close(

)# 程序池關閉後不再接收新的請求,指的是不再接收新的請求,並不會殺死正在執行的程序

po.join(

)# 等待po中所有的子程序結束,必須放在close後面

來看一下執行結果

0.0

0.34984100078459757

0.5201072456606135

0.40449373225754937

1.224435745451367

3.506216623423578

1.4749908838684131

2.6109286282731015

0.6106200958130108

1.4684032840327501

來看一下常用函式的解析

po = pool(

), args[

, kwds]])

# 使⽤⾮阻塞⽅式調⽤func(並⾏執⾏, 堵塞⽅式必須等待上⼀個程序退出才能執⾏下⼀個程序) , args為傳遞給func的引數列表, kwds為傳遞給func的關鍵字引數列表;

po.(func[

, args[

, kwds]])

# (了解即可幾乎不用) 使⽤阻塞⽅式調⽤func

po.close(

)# 關閉pool, 使其不再接受新的任務;

po.terminate(

)# 不管任務是否完成, ⽴即終⽌;

po.join(

)# 主程序阻塞, 等待⼦程序的退出, 必須在close或terminate之後使⽤;

Python 多執行緒與多程序

前言 以前玩單機或者玩小資料集,都基本不用多執行緒或多程序都能基本滿足需求了 所以沒怎麼了解這方面的東西。但現在玩幾百萬甚至上千萬的資料,甚至集群等東西之後,就有必要學習多執行緒或多程序了。在python中首先要匯入相關的模組 import threading as td import multip...

python 多執行緒與多程序

程序與執行緒的區別 程序 應用程式的執行例項,每乙個執行中的程式就是乙個程序 執行緒 程序的組成部分,乙個程序可以擁有多個執行緒 在多執行緒中,會有乙個主線程來完成整個程序從開始到結束的全部操作,而其他的執行緒會在主線程的執行過程中被建立或退出。python景區賣票系統 多執行緒的應用 import...

Python多執行緒與多程序

python多執行緒與多程序 程序 process 和執行緒 thread 是非常抽象的概念,也是程式設計師必需掌握的核心知識!多程序和多執行緒程式設計對於 的併發執行,提公升 效率和縮短執行時間至關重要。程序 process 和執行緒 thread 程序是作業系統分配資源的最小單元 執行緒是作業系...