python:3.8.10官方文檔學習


1:基於線程的並行

在 CPython 中,由於存在 全局解釋器鎖,同一時刻只有一個線程可以執行 Python 代碼(雖然某些性能導向的庫可能會去除此限制)。
如果你想讓你的應用更好地利用多核心計算機的計算資源,推薦你使用 multiprocessing 或 concurrent.futures.ProcessPoolExecutor
但是,如果你想要同時運行多個 I/O 密集型任務,則多線程仍然是一個合適的模型

多進程並發適合:
I/O 密集型任務

1:threading.active_count()      返回當前存活的 Thread 對象的數量。 返回值與 enumerate() 所返回的列表長度一致
2:threading.current_thread()     返回當前對應調用者的控制線程的 Thread 對象。如果調用者的控制線程不是利用 threading 創建,會返回一個功能受限的虛擬線程對象。
3:threading.excepthook(args/)   處理由 Thread.run() 引發的未捕獲異常。
4:threading.get_ident()        返回當前線程的 “線程標識符”。它是一個非零的整數,它的值沒有直接含義,主要是用作 magic cookie,
                        比如作為含有線程相關數據的字典的索引。線程標識符可能會在線程退出,新線程創建時被復用
5:threading.get_native_id()     
返回內核分配給當前線程的原生集成線程 ID,這是一個非負整數。
                        它的值可被用來在整個系統中唯一地標識這個特定線程(直到線程終結,在那之后該值可能會被 OS 回收再利用)。
6:threading.enumerate()        以列表形式返回當前所有存活的 Thread 對象。 該列表包含守護線程,
                        current_thread()當前運行的線程創建的虛擬線程對象和主線程。它不包含已終結的線程和尚未開始的線程
7:threading.main_thread()      返回主 Thread 對象。一般情況下,主線程是Python解釋器開始時創建的線程(返回主線程)
8:threading.settrace(func)     為所有 threading 模塊開始的線程設置追蹤函數。在每個線程的 run() 方法被調用前,func 會被傳遞給 sys.settrace() 性能測試使用使用
9:threading.setprofile(func)     為所有 threading 模塊開始的線程設置性能測試函數。在每個線程的 run() 方法被調用前,func 會被傳遞給 sys.setprofile()  
10:threading.stack_size([size])   返回創建線程時使用的堆棧大小。可選參數 size 指定之后新建的線程的堆棧大小,
                        而且一定要是0(根據平台或者默認配置)或者最小是32,768(32KiB)的一個正整數。如果 size 沒有指定,默認是0。
                        如果不支持改變線程堆棧大小,會拋出 RuntimeError 錯誤。如果指定的堆棧大小不合法,會拋出 ValueError 錯誤並且不會修改堆棧大小。
                        32KiB是當前最小的能保證解釋器有足夠堆棧空間的堆棧大小。需要注意的是部分平台對於堆棧大小會有特定的限制,
                        例如要求大於32KiB的堆棧大小或者需要根據系統內存頁面的整數倍進行分配
                         應當查閱平台文檔有關詳細信息(4KiB頁面比較普遍,在沒有更具體信息的情況下,建議的方法是使用4096的倍數作為堆棧大小)
11:threading.TIMEOUT_MAX        阻塞函數( Lock.acquire()RLock.acquire()Condition.wait(), ...)中形參timeout 允許的最大值。
                        傳入超過這個值的 timeout 會拋出 OverflowError 異常
                        print(threading.TIMEOUT_MAX)    4294967.0
                        最多只允許阻塞這么長時間


 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM