第八重境界:飞升期

第三十四章:分身千万 (Concurrency)

← 上一章 | 返回宗门地图
路人
Py
师尊,我用搜魂大法 (Spider) 抓取经书,但是一张一张抓太慢了!
天外天有亿万经书,照这个速度,我抓到飞升也抓不完啊!
有没有办法同时抓取一千张?
吉多
老祖
这需要修炼 分身千万 (Concurrency) 之术。
此术分为两派:
1. 多线程 (Threading):适合在等待天外天回应时发呆 (IO密集)。
2. 协程 (Asyncio):上古秘法,单人成军,在同一个时间裂缝中穿梭。

1. 影分身 (Threading)

召唤多个影子,同时干活。

import threading
import time

def task(name):
    print(f"{name} 开始抓取...")
    time.sleep(2) # 模拟等待
    print(f"{name} 抓取完成!")

# 召唤两个影子
t1 = threading.Thread(target=task, args=("影子1",))
t2 = threading.Thread(target=task, args=("影子2",))

t1.start()
t2.start()

t1.join() # 等待影子回归
t2.join()
print("全部完成!")

2. 时空穿梭 (Asyncio)

更高级的技巧,无需召唤实体影子,仅凭意念切换。

import asyncio

async def fetch(url):
    print(f"开始下载 {url}")
    await asyncio.sleep(1) # 假装在下载
    print(f"下载完成 {url}")

async def main():
    # 同时发出三个指令
    await asyncio.gather(
        fetch("经书1"),
        fetch("经书2"),
        fetch("经书3")
    )

# 启动法阵
# asyncio.run(main())

🎮 试练:分身乏术

任务:虽然这里无法真正运行多线程,请写出创建一个线程并启动的代码框架。

分身法阵准备中...
请注入灵力...
>>>
下一章:推演天机 →