91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python多線程threading模塊如何創建子線程

發布時間:2021-07-12 10:36:43 來源:億速云 閱讀:216 作者:小新 欄目:開發技術

這篇文章主要為大家展示了“Python多線程threading模塊如何創建子線程”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“Python多線程threading模塊如何創建子線程”這篇文章吧。

GIL(全局解釋器鎖)是C語言版本的Python解釋器中專有的,GIL的存在讓多線程的效率變低(哪個線程搶到鎖,就執行哪個線程)。在IO密集型程序中,多線程依然比單線程效率高(GIL通過IO阻塞自動切換多線程)。

解決GIL(全局解釋器鎖)的問題的三種方法:

1、不要用C語言版本的Python解釋器。
2、讓子線程運行其他語言代碼(例如:主線程運行Python代碼,子線程運行C語言代碼(C語言的動態庫))。
3、多進程代替多線程(多進程可以利用多核CPU)。

創建子線程的第一種方式:

demo.py(通過函數名指定子線程的任務):

import threading
def test1():
  print("子線程運行了...")
def main():
  # 通過 target=函數名 的方式定義子線程
  t1 = threading.Thread(target=test1) # 通過target指定子線程要執行的任務。可以通過args=元組 來指定test1的參數。
  t1.start() # 只有在調用start方法后才會創建子線程并執行
  # threading.enumerate() 打印正在執行的線程,包括主線程和子線程
  print(threading.enumerate()) # [<_MainThread(MainThread, started 139724821161728)>, <Thread(Thread-1, started 139724795434752)>]
  # 當子線程沒有結束時,主線程也不會結束。 當主線程結束后,所有的子線程也會結束。
if __name__ == "__main__":
  main()

運行結果:

子線程運行了...
[<_MainThread(MainThread, started 7076)>, <Thread(Thread-1, started 2832)>]

創建子線程的第二種方式:

demo.py(通過類來定義子線程):

#coding=utf-8
import threading
# 通過類定義子線程。 繼承threading.Thread類
class MyThread(threading.Thread):
  # 開啟子線程時,會自動執行run函數
  def run(self):
    print(self.name) # Thread-1 name屬性中保存的是當前線程的名字
def main():
  t = MyThread() # 實例化自定義的子線程
  t.start() # 開啟子線程
if __name__ == '__main__':
  main()

運行結果:

Thread-1

以上是“Python多線程threading模塊如何創建子線程”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

鄂伦春自治旗| 聊城市| 芮城县| 福州市| 安吉县| 柏乡县| 舟曲县| 云阳县| 新安县| 包头市| 南岸区| 福安市| 南溪县| 同德县| 枣庄市| 南雄市| 拜城县| 武安市| 肥西县| 山东省| 宜宾县| 荔波县| 库车县| 西吉县| 三江| 新闻| 新源县| 清苑县| 通化市| 海晏县| 岳池县| 青岛市| 屏边| 宜都市| 通化县| 白沙| 宁陵县| 临汾市| 茶陵县| 湘西| 秦皇岛市|