python多執行緒缺陷 Python中的執行緒處理

2021-10-11 14:49:20 字數 873 閱讀 2571

為了增加複雜度:

使用穿線模組

優點:在自己的執行緒中執行任何函式(實際上是任何可呼叫的)真的很容易。

共享資料不是一件容易的事(鎖從來都不是一件容易的事:),至少很簡單。

缺點:正如juergen所提到的, python執行緒實際上不能併發訪問直譯器中的狀態(有乙個大鎖,臭名昭著的global interpreter lock。)實際上,這意味著執行緒對於i / o繫結任務(網路,寫入磁碟,等等),但對於併發計算根本沒有用。

使用多重處理模組

在簡單的用例中,threading除了每個任務都是在自己的程序而不是自己的執行緒中執行之外,這與使用完全一樣。(幾乎從字面上看:如果以eli的示例為例,並threading用multiprocessing,,替換thread為process,然後將queue(模組)替換為multiprocessing.queue,它應該可以正常執行。)

優點:所有任務的實際併發(無全域性直譯器鎖定)。

可以擴充套件到多個處理器,甚至可以擴充套件到多台計算機。

缺點:程序比執行緒慢。

程序之間的資料共享比執行緒複雜。

記憶體不是隱式共享的。您要麼必須明確共享它,要麼必須醃製變數並將其來回傳送。這更安全,但更困難。(如果越來越重要,python開發人員似乎正在朝這個方向努力。)

使用事件模型,例如twisted

優點:您可以很好地控制優先順序,執行時間。

缺點:即使有了乙個好的庫,非同步程式設計通常也比執行緒程式設計難,無論是在理解應該發生的事情還是在除錯實際發生的事情上,都很難。

在所有情況下,我假設您已經了解了多工處理中的許多問題,尤其是如何在任務之間共享資料的棘手問題。如果由於某種原因您不知道何時以及如何使用鎖和條件,則必須從這些開始。多工**充滿了微妙之處和技巧,在開始之前最好對概念有乙個很好的理解。

python多執行緒 python多執行緒

通常來說,多程序適用於計算密集型任務,多執行緒適用於io密集型任務,如網路爬蟲。關於多執行緒和多程序的區別,請參考這個 下面將使用python標準庫的multiprocessing包來嘗試多執行緒的操作,在python中呼叫多執行緒要使用multiprocessing.dummy,如果是多程序則去掉...

python多執行緒詳解 Python多執行緒詳解

前言 由於最近的工作中一直需要用到python去處理資料,而在面對大量的資料時,python多執行緒的優勢就展現出來了。因而藉此機會,盡可能詳盡地來闡述python多執行緒。但對於其更底層的實現機制,在此不做深究,僅是對於之前的一知半解做個補充,也希望初學者能夠通過這篇文章,即便是照葫蘆畫瓢,也能夠...

python程式多執行緒 PYTHON多執行緒

在單執行緒的情況下,程式是逐條指令順序執行的。同一時間只做乙個任務,完成了乙個任務再進行下乙個任務。比如有5個人吃飯,單執行緒一次只允許乙個人吃,乙個人吃完了另乙個人才能接著吃,假如每個人吃飯都需要1分鐘,5個人就需要5分鐘。多執行緒的情況下,程式就會同時進行多個任務,雖然在同一時刻也只能執行某個任...