【掌握Python多線程並發編程】輕鬆入門高效實現

提問者:用戶BYRM 發布時間: 2025-05-23 00:32:50 閱讀時間: 3分鐘

最佳答案

媒介

在當今疾速開展的互聯網時代,高效力的順序履行變得尤為重要。Python作為一種廣泛利用的編程言語,其多線程並發編程功能可能明顯進步順序的履行效力。本文將帶你輕鬆入門Python多線程並發編程,並展示怎樣高效實現。

學前須知

在開端進修之前,你須要具有以下基本:

  • Python基本語法
  • Python文件操縱
  • Python模塊利用

開辟東西

推薦利用PyCharm作為開辟東西,它存在富強的代碼編輯跟調試功能。

課程安排

  • 過程實現多任務
  • 線程實現多任務
  • 多任務利用

一、多任務介紹

1.1 多任務的不雅點

多任務是指在同一時光內履行多個任務。

1.2 多任務的兩種表示情勢

  • 並發:在一段時光內交替去履行多個任務。
  • 並行:在一段時光內真正的同時一起履行多個任務。

1.3 並發

例子:對單核CPU處理多任務,操縱體系輪番讓各個任務交替履行。

1.4 並行

例子:對多核CPU處理多任務,操縱體系會給CPU的每個內核安排一個履行的任務,多個內核是真正的一起同時履行多個任務。

二、線程的介紹

線程是一個獨破的履行流程,每個線程都有本人的客棧空間跟順序計數器,它們同時運轉,但不一定按照次序履行。

三、多線程實現多任務

3.1 線程的創建步調

import threading

def printtime(threadName, delay):
    count = 0
    while count < 5:
        time.sleep(delay)
        count += 1
        print("%s: %s" % (threadName, time.ctime(time.time())))

try:
    thread1 = threading.Thread(target=printtime, args=("Thread-1", 2,))
    thread2 = threading.Thread(target=printtime, args=("Thread-2", 4,))
except:
    print("Error: 無法啟動線程")

thread1.start()
thread2.start()

thread1.join()
thread2.join()

3.2 線程履行帶有參數的任務

def worker(name, delay):
    print(f"線程 {name} 開端")
    time.sleep(delay)
    print(f"線程 {name} 實現")

thread1 = threading.Thread(target=worker, args=("Thread-1", 2,))
thread2 = threading.Thread(target=worker, args=("Thread-2", 4,))

thread1.start()
thread2.start()

thread1.join()
thread2.join()

3.3 主線程跟子線程的結束次序

  • 主線程會等待全部的子線程實現才結束。
  • 設置保衛主線程:只有全部保衛線程都結束,全部Python順序才會退出。

四、線程間的履行次序

4.1 線程間的履行是無序的

4.2 例子

import threading

def print_numbers():
    for i in range(5):
        print("數字", i)

thread1 = threading.Thread(target=print_numbers)
thread2 = threading.Thread(target=print_numbers)

thread1.start()
thread2.start()

thread1.join()
thread2.join()

五、多線程-案例

5.1 須要分析

編寫一個簡單的收集爬蟲,利用多線程同時爬取多個網頁。

5.2 實現

import threading
import requests

def crawl(url):
    response = requests.get(url)
    print(f"爬取 {url} 成功")

urls = [
    "http://www.example.com",
    "http://www.example.org",
    "http://www.example.net"
]

threads = []
for url in urls:
    thread = threading.Thread(target=crawl, args=(url,))
    threads.append(thread)
    thread.start()

for thread in threads:
    thread.join()

六、過程跟線程對比

6.1 關係對比

  • 過程是線程的容器。
  • 一個過程可能包含多個線程。

6.2 差別對比

  • 過程是體系停止資本分配的最小單位,而線程是過程履行順序時的最小調理單位。
  • 過程有本人獨破的內存空間,而線程共享過程的內存空間。

6.3 優毛病對比

  • 過程:長處是資本獨破,毛病是創建跟切換開支大年夜。
  • 線程:長處是創建跟切換開支小,毛病是資本共享,存在競爭成績。

七、總結

經由過程本文的進修,信賴你曾經控制了Python多線程並發編程的基本知識跟技能。在現實利用中,公道應用多線程技巧可能明顯進步順序的履行效力。盼望本文能幫助你輕鬆入門Python多線程並發編程,並在現實中壹直進步本人的技能。

相關推薦
    发布时间:2024-11-11
    有青莲忘川、花泽、三月妖孽等人简介:杭州碎星网络科技有限公司成立于2017-05-11,法定代表人为何义超,注册资本为100万元人民币,统一社会信用代码为91330106MA28RR5X0L,企业地址位于浙江省杭州市拱墅区莫干山路116
    发布时间:2024-11-11
    人教版,广西高中语文书全都是人教版的,以上广西的高中识本不统一,各地有各地的版本,有人教版也有沪教版,现在统一使用人教版的了。
    发布时间:2024-11-11
    1、微微一笑很倾城 、 奈何桥边笑奈何。2、橘子味儿的猫 、 草莓味儿的狗。3、稚于最初 、 安于情长。4、七年凉城空浮生 、 三年空城已离殇。5、生物毁了我的清白 、 数学毁了我的未来。6、沐北清歌寒 、 沐南伊人舞
    发布时间:2024-11-11
    1、注意密度饲养鳌虾之前,首先要选择好虾缸,并计划好饲养的密度,以及是否混养其它的观赏虾类。鳌虾是比较具有攻击性的观赏虾,鳌虾有较强的领地意识,若是不想要自己养的鳌虾经常打架受伤的话,最好减小饲养密度。2、缸内造景建立一个良好的生
    发布时间:2024-11-11
    华图的面试基地班靠谱。面试基地班一般是以封闭的形式去培训,这样可以保证学习效果以及更有针对性,上岸率也非常高,而且报名之前会签协议,面试通过协议生效,没有通过是可以退费的。而且基地班的老师都是优中选优的,是华图最好的老师可以放心。
    发布时间:2024-11-11
    1、女生经常喝奶茶容易导致摄入了过多的糖分和蛋白质,堵塞了毛孔,引发痤疮。2、奶茶它主要是一种奶制品,里边添加了少量的茶叶成分,经常喝会导致体内血糖升高,引发糖尿病,并且这个糖分在体内堆积又不容易排出,容易形成肥胖的现象。并且奶茶都是
    发布时间:2024-11-11
    15款大众迈腾第一代车型的大灯品牌为Hella。Hella是全球知名的照明与电子技术领域的企业,其产品涉及汽车、物流和工业等多个领域。Hella的汽车灯具以高品质、高性能和高稳定性著称。因此,选择Hella成为大众迈腾第一代车型的大灯品牌
    发布时间:2024-11-11
    孕妇一般是要注意饮食,尤其是药物更应该注意,玫瑰花,是可以活血化瘀疏肝。对于临床上女性月经期月经不调,腹疼,痛经等有很好作用,还可以治疗肝气郁结导致的心情不好,烦躁易怒,还有一定美容作用,所以在孕期是不能服用的,一定要注意。
    发布时间:2024-11-11
    1、何首乌:何首乌是滋阴补肾第一品。也是被当做医家第一的保健品。女性有筋骨酸痛,早衰等问题,都可以通过服用何首乌起到一定很好的改善作用。2、枸杞子:枸杞子性平味甘,具有清心明目养肝的功效,其实枸杞子也是滋阴补肾的最好选择之一。尤其对于
    发布时间:2024-11-11
    巨人之握+抵抗之靴+暗影战斧+无尽战刃+破军+破甲弓出装思路首先打野刀出门,升到二级巨人之握即可。再来是鞋子,大家可以根据情况出装,抵抗之靴、影刃之足和疾步之靴都是可以的,影刃之足加强生存能力,疾步之靴gank效率更高。再来是暗影战斧