虹一法師
完全可以,但看你處理的是什麼任務,雖然Python有GIL全局解釋器鎖,但如果處理的是IO密集、網絡請求密集的任務,那麼多線程能夠大大提高效率。
多線程(Threading)允許您將應用程序分解為多個子任務,並同時運行這些任務。如果正確使用多線程,則可以提高應用程序的速度,性能和呈現能力。
Python多線程示例
下面有個簡單的例子,可以給我們簡單介紹多線程的用途。
保存文件,然後按F5鍵運行該程序。如果一切都正確完成,這是您應該看到的輸出:
這將為您作為參數傳遞的函數創建一個新線程並開始執行它。請注意,您可以將其(線程_測試)替換為要作為線程運行的任何其他函數。
線程模塊
該模塊是python中線程的高級實現,也是用於管理多線程應用程序的事實上的標準。與線程模塊相比,它提供了廣泛的功能。
同樣,您也重寫了run()方法。它包含您要在線程內執行的代碼。在此示例中,您已調用thread_test()函數。
這是thread_test()方法,該方法將i的值作為參數,在每次迭代時將其減少1, 並循環遍歷其餘代碼,直到i變為0。在每次迭代中,它都會打印當前正在執行的線程的名稱。並等待數秒(也被視為參數)。thread1 = threadtester(),在這裡,我們正在創建一個線程,並傳遞在__init__中聲明的三個參數。第一個參數是線程的ID,第二個參數是線程的名稱,第三個參數是計數器,它確定while循環應運行多少次。thread2.start(),
start方法用於啟動線程的執行。在內部,start()函數調用您的類的run()方法。thread3.join()
,join()方法阻止其他代碼的執行,並等待直到調用它的線程完成。通過以上例子我們可以知道,併發可以對兩種類型的問題產生很大的影響。這些通常稱為CPU綁定和IO綁定。受IO約束的問題會導致程序運行緩慢,因為它經常必須等待某些外部資源的輸入/輸出。
當您的程序使用比CPU慢得多的東西時,它們經常出現。比CPU慢的例子很多,但是值得慶幸的是您的程序並未與其中的大多數交互。您的程序最常與之交互的緩慢事物是文件系統和網絡連接,這種情況就非常適合用python多線程能去提高效率。