亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

康保县| 出国| 中牟县| 舞钢市| 亚东县| 泗洪县| 华阴市| 静宁县| 碌曲县| 南宫市| 昌江| 襄汾县| 宣化县| 华蓥市| 兴山县| 阿拉善盟| 阿鲁科尔沁旗| 天峨县| 湖口县| 沙雅县| 寻乌县| 乌苏市| 南城县| 镇原县| 集安市| 华容县| 元谋县| 嘉峪关市| 石城县| 新郑市| 新丰县| 日喀则市| 娱乐| 循化| 鄂温| 新晃| 舟曲县| 平乐县| 舞阳县| 乐陵市| 涟水县|