python使用多程式
python多執行緒適合IO密集型場景,而在CPU密集型場景,並不能充分利用多核CPU,而協程本質基於執行緒,同樣不能充分發揮多核的優勢。
針對計算密集型場景需要使用多程式,python的multiprocessing與threading模組非常相似,支援用程式池的方式批量建立子程式。
-
建立單個Process程式(使用func)
只需要例項化Process類,傳遞函式給target引數,這點和threading模組非常的類似,args為函式的引數
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
-
建立單個Process程式(使用class)
繼承Process類,重寫run方法建立程式,這點和threading模組基本一樣
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
|
* 停止程式
terminate()結束子程式,但是會導致子程式的資源無法釋放掉,是不推薦的做法,因為結束的時候不清楚子執行緒的執行狀況,有很大可能性導致子執行緒在不恰當的時刻被結束。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|
-
直接建立多個Process程式
1 2 3 4 5 6 7 8 9 10 11 12 |
|
-
使用程式池建立多個程式
在利用Python進行系統管理的時候,特別是同時操作多個檔案目錄,或者遠端控制多臺主機,並行操作可以節約大量的時間。當被操作物件數目不大時,可以直接利用multiprocessing中的Process動態成生多個程式,十幾個還好,但如果是上百個,上千個目標,手動的去限制程式數量卻又太過繁瑣,此時可以發揮程式池的功效。
Pool可以提供指定數量的程式供使用者呼叫,當有新的請求提交到pool中時,如果池還沒有滿,那麼就會建立一個新的程式用來執行該請求;但如果池中的程式數已經達到規定最大值,那麼該請求就會等待,直到池中有程式結束,才會建立新的程式來它。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
|
如果關心每個程式的執行結果,可以使用返回結果的get方法獲取,程式碼如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
|
相關文章
- Python多程式Python
- python:python的多程式Python
- [python] 多程式程式設計Python程式設計
- Python多程式程式設計Python程式設計
- Python 多執行緒多程式Python執行緒
- 【Python從入門到精通】(二十五)Python多程式的使用Python
- Python中的多程式Python
- python多程式基礎Python
- python---多工程式Python
- 入門python多執行緒/多程式Python執行緒
- Python的多程式和多執行緒Python執行緒
- Python使用多程式提高網路爬蟲的爬取速度Python爬蟲
- Python並行程式設計(七):多程式的基本使用和與多執行緒的差異Python並行行程程式設計執行緒
- [譯] Python 的多執行緒與多程式Python執行緒
- python 多程式和多執行緒學習Python執行緒
- python多程式取代多執行緒的探究Python執行緒
- Python學習筆記 - 多程式Python筆記
- python中socket+multiprocessing多程式Python
- Python 多執行緒及程式Python執行緒
- Python多程式之分享(multiprocessing包)Python
- Python的多工程式設計Python程式設計
- python多程式簡介,和VNPY多程式引數優化程式碼分析Python優化
- Python使用multiprocessing實現多程序Python
- 使用Python編寫一個多執行緒的12306搶票程式Python執行緒
- Python多程式使用佇列共享資料協同判斷素數Python佇列
- python 多執行緒程式設計Python執行緒程式設計
- Python多執行緒程式設計Python執行緒程式設計
- python中的多工程式設計Python程式設計
- Python多工程式設計介紹Python程式設計
- python爬蟲入門八:多程式/多執行緒Python爬蟲執行緒
- Python多程式程式設計基礎——圖文版Python程式設計
- 使用PyInstaller打包Python程式Python
- 1.5.1 Python程式使用 -- forkPython
- Python——程式、執行緒、協程、多程式、多執行緒(個人向)Python執行緒
- 使用 Python 迴圈建立多個列表Python
- 豬行天下之Python基礎——9.1 Python多執行緒與多程式(上)Python執行緒
- 豬行天下之Python基礎——9.2 Python多執行緒與多程式(中)Python執行緒
- 豬行天下之Python基礎——9.3 Python多執行緒與多程式(下)Python執行緒