中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python多進程知識點整理

發布時間:2021-08-17 20:15:58 來源:億速云 閱讀:167 作者:chen 欄目:云計算

本篇內容介紹了“Python多進程知識點整理”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

1.Python 多進程

類型CPU密集型操作IO密集型操作網絡請求密集型操作
線性操作94.9182499622.461999957.3296
多線程操作101.170000124.86050010.505333265
多進程操作53.8899999912.784000040.504500032

通過上表我們可以看到:

多線程在IO密集型的操作下似乎也沒有很大的優勢(也許IO操作的任務再繁重一些就能體現出優勢),在CPU密集型的操作下明顯地比單線程線性執行性能更差,但是對于網絡請求這種忙等阻塞線程的操作,多線程的優勢便非常顯著了
多進程無論是在CPU密集型還是IO密集型以及網絡請求密集型(經常發生線程阻塞的操作)中,都能體現出性能的優勢。不過在類似網絡請求密集型的操作上,與多線程相差無幾,但卻更占用CPU等資源,所以對于這種情況下,我們可以選擇多線程來執行

構造方法描述
target執行的方法
name進程名
args執行方法的參數
實例方法描述
is_alive()查看進程是否正在運行
join()阻塞進程
start()開始進程
run()被start()調用
terminate()停止進程
屬性描述
name進程名字
pid進程編號
daemon守護進程

2.例子
2.1 使用多線程運行函數

import multiprocessing as mpdef count():for i in range(1000):
        print(i)#只有在本程序為主程序的時候運行接下來的代碼#每個python模塊(python文件,也就是此處的test.py和import_test.py)都包含內置的#變量__name__,當運行模塊被執行的時候,__name__等于文件名(包含了后綴.py);如果#import到其他模塊中,則__name__等于模塊名稱(不包含后綴.py)。而“__main__”等于當#前執行文件的名稱(包含了后綴.py)。進而當模塊被直接執行時,__name__ == 'main'結#果為真。if __name__ == "__main__":#注意這里的target調用的函數是函數名稱,不能帶();另外Process第一個字母大寫p1=mp.Process(target=count)
    p2=mp.Process(target=count)
    p1.start()
    p2.start()

在運行結果中我們可以看到這樣的片段:
152
953
153
154
155
156
157
954
158
955
159
956
160
說明在執行第一個循環的進程中,并發開始執行了第二個進程,兩個循環進程是同時進行的。

2.2 daemon

import multiprocessing as mpdef count1():for i in range(10):
        print(i)def count2():for i in range(10):
        print(i*10)if __name__ == "__main__":
    p1=mp.Process(target=count1)
    p2=mp.Process(target=count2)#進程的屬性一定要在進程開始前設置p1.daemon=Truep1.start()
    p2.start()
    print("Done")

輸出的結果為:
Done
0
10
20
30
40
50
60
70
80
90
我們可以看到主程序先運行結束,打印了“Done”,由于count1的進程沒有設置保護進程,所以主程序結束后,count1進程也被終止了。但是,count2由于被設置了程度保護,所以count2進程并沒有隨著主程序的終止而終止。
2.3 lock
lock用來處理共享資源的訪問,避免訪問沖突
2.4 Semaphore
Semaphore限制訪問數量
2.5 Event
Event用來實現進程間的同步通信
2.6 Queue
多進程安全隊列,用于實現進程間的數據傳遞。
2.7 Pipe
2.8 Pool

“Python多進程知識點整理”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

恭城| 望奎县| 新巴尔虎左旗| 池州市| 普宁市| 华容县| 洪泽县| 定襄县| 宾川县| 临泉县| 依安县| 富宁县| 兴化市| 建始县| 遵义市| 门头沟区| 政和县| 揭阳市| 册亨县| 收藏| 乌兰察布市| 宁德市| 临泉县| 五大连池市| 高要市| 南漳县| 梁山县| 慈溪市| 彰化市| 南木林县| 汉阴县| 桂东县| 高安市| 贡山| 麻城市| 根河市| 江门市| 哈巴河县| 奉新县| 宜兰市| 友谊县|