日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

Python多線程編程全解析:基礎到高級用法

來源: 責編: 時間:2024-03-27 09:24:24 170觀看
導讀Python中有多線程的支持。Python的threading模塊提供了多線程編程的基本工具。在下面,我將列舉一些基礎的多線程用法和一些高級用法,并提供相應的源代碼,其中包含中文注釋。基礎用法:創(chuàng)建和啟動線程import threadingimpor

fw928資訊網——每日最新資訊28at.com

Python中有多線程的支持。Python的threading模塊提供了多線程編程的基本工具。在下面,我將列舉一些基礎的多線程用法和一些高級用法,并提供相應的源代碼,其中包含中文注釋。fw928資訊網——每日最新資訊28at.com

基礎用法:

創(chuàng)建和啟動線程

import threadingimport time# 定義一個簡單的線程類class MyThread(threading.Thread):    def run(self):        for _ in range(5):            print(threading.current_thread().name, "is running")            time.sleep(1)# 創(chuàng)建兩個線程實例thread1 = MyThread(name="Thread-1")thread2 = MyThread(name="Thread-2")# 啟動線程thread1.start()thread2.start()# 主線程等待所有子線程結束thread1.join()thread2.join()print("Main thread exiting")

線程同步 - 使用鎖

import threading# 共享資源counter = 0# 創(chuàng)建鎖counter_lock = threading.Lock()# 定義一個簡單的線程類class MyThread(threading.Thread):    def run(self):        global counter        for _ in range(5):            with counter_lock:  # 使用鎖保護臨界區(qū)                counter += 1                print(threading.current_thread().name, "Counter:", counter)# 創(chuàng)建兩個線程實例thread1 = MyThread(name="Thread-1")thread2 = MyThread(name="Thread-2")# 啟動線程thread1.start()thread2.start()# 主線程等待所有子線程結束thread1.join()thread2.join()print("Main thread exiting")

高級用法:

使用線程池

import concurrent.futuresimport time# 定義一個簡單的任務函數(shù)def task(name):    print(f"{name} is running")    time.sleep(2)    return f"{name} is done"# 使用線程池with concurrent.futures.ThreadPoolExecutor(max_workers=3) as executor:    # 提交任務給線程池    future_to_name = {executor.submit(task, f"Thread-{i}"): f"Thread-{i}" for i in range(5)}    # 獲取任務結果    for future in concurrent.futures.as_completed(future_to_name):        name = future_to_name[future]        try:            result = future.result()            print(f"{name}: {result}")        except Exception as e:            print(f"{name}: {e}")

使用Condition進行線程間通信

import threadingimport time# 共享資源shared_resource = None# 創(chuàng)建條件變量condition = threading.Condition()# 定義一個寫線程class WriterThread(threading.Thread):    def run(self):        global shared_resource        for _ in range(5):            with condition:                shared_resource = "Write data"                print("Writer wrote:", shared_resource)                condition.notify()  # 通知等待的線程                condition.wait()  # 等待其他線程通知# 定義一個讀線程class ReaderThread(threading.Thread):    def run(self):        global shared_resource        for _ in range(5):            with condition:                while shared_resource is None:                    condition.wait()  # 等待寫線程通知                print("Reader read:", shared_resource)                shared_resource = None                condition.notify()  # 通知寫線程# 創(chuàng)建寫線程和讀線程writer_thread = WriterThread()reader_thread = ReaderThread()# 啟動線程writer_thread.start()reader_thread.start()# 主線程等待所有子線程結束writer_thread.join()reader_thread.join()print("Main thread exiting")

這些例子涵蓋了一些基礎和高級的多線程用法。請注意,在Python中由于全局解釋器鎖(GIL)的存在,多線程并不能充分利用多核處理器。如果需要充分利用多核處理器,可以考慮使用multiprocessing模塊進行多進程編程。fw928資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-79601-0.htmlPython多線程編程全解析:基礎到高級用法

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 面試官:只知道v-model是modelValue語法糖,那你可以走了

下一篇: Vue3-Emoji-Picker一款基于Vue3的emoji表情選擇器深度解析與實踐

標簽:
  • 熱門焦點
Top 主站蜘蛛池模板: 都兰县| 绥中县| 永川市| 溧阳市| 雷波县| 乐都县| 安阳市| 监利县| 天长市| 云和县| 太仆寺旗| 雷州市| 淄博市| 南和县| 大英县| 中西区| 漳浦县| 大方县| 延川县| 游戏| 合江县| 长武县| 元朗区| 泸西县| 库伦旗| 台东县| 山丹县| 彭州市| 德庆县| 招远市| 乡宁县| 高台县| 河南省| 光山县| 兰坪| 宜都市| 皮山县| 重庆市| 吉水县| 宜良县| 邯郸市|