1. 程式人生 > >Python_線程、線程效率測試、數據隔離測試、主線程和子線程

Python_線程、線程效率測試、數據隔離測試、主線程和子線程

正在 可靠 process () -c 全局 成功 style 子線程

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_線程、線程效率測試、數據隔離測試、主線程和子線程