Python_線程、線程效率測試、數據隔離測試、主線程和子線程
0、進程中的概念
三狀態:就緒、運行、阻塞
就緒(Ready):當進程已分配到除CPU以外的所有必要資源,只要獲得處理機便可立即執行,這時的進程狀態成為就緒狀態.
執行/運行(Running)狀態:當進程已獲得處理機,其程序正在處理機上執行,此時的進程狀態成為執行狀態.
阻塞(Blocked)狀態正在執行的進程,由於等待某個事件發生而無法執行時,便放棄處理機而處於阻塞狀態.引起進程阻塞的事件可有多種,例如,等待I/O完成、申請緩沖區不能滿足、等待信件(信號)等.
同步:一個任務的完成需要依賴另外一個任務時,只有等待被依賴的任務完成後,依賴的任務才能算完成,這是一種可靠的任務序列。要麽成功都成功,失敗都失敗,兩個任務的狀態可以保持一致。
異步:不需要等待被依賴的任務完成,只是通知被依賴的任務要完成什麽工作,依賴的任務也立即執行,只要完成了整個任務就算完成了。至於被依賴的任務最終是否真正完成,依賴他的任務無法確定,所以是不可靠的任務序列。
進程是計算機中最小的資源分配單位。
基礎的進行開啟:
1 import time 2 from multiprocessing import Process 3 4 def f(name): 5 print(‘hello‘, name) 6 print(‘我是子進程‘) 7 8 if子進程的開啟__name__ == ‘__main__‘: 9 p = Process(target=f, args=(‘bob‘,)) 10 p.start() 11 time.sleep(1) 12 print(‘執行主進程了‘)
1 D:\Python36\python.exe E:/Python/草稿紙.py 2 hello bob 3 我是子進程 4 執行主進程了 5 6 Process finished with exit code 0結果
鎖 —— 互斥鎖
信號量 —— 鎖 + 計數器
事件 —— Python線程的事件用於主線程控制其他線程的執行,事件主要提供了三個方法set、wait、clear。
事件處理的機制:全局定義了一個‘Flag’,如果‘Flag’值為False,那麽當程序event.wait方法時就會阻塞,如果‘Flag‘值為True,那麽event,wait方法便不再阻塞.
clear:將‘Flag‘設置為False.
set:將‘Flag‘設置為True.
1、線程
2、線程效率測試
3、數據隔離測試
4、主線程和子線程
Python_線程、線程效率測試、數據隔離測試、主線程和子線程