Python 非同步程式設計入門
Python 的 async/await 讓非同步程式設計變得簡單。這篇文章將介紹如何使用 asyncio 進行非同步開發。
為什麼需要非同步?
非同步程式設計可以大幅提升 I/O 密集型應用的效能。當一個任務在等待 I/O 操作時,CPU 可以處理其他任務。
async/await 基礎
import asyncio
async def fetch_data(url):
# 模擬網路請求
await asyncio.sleep(1)
return f"Data from {url}"
async def main():
tasks = [fetch_data(f"url_{i}") for i in range(5)]
results = await asyncio.gather(*tasks)
return results
常見模式
- 並發執行:使用
asyncio.gather()同時執行多個任務 - 任務管理:使用
asyncio.create_task()創建任務 - 錯誤處理:使用 try/except 處理非同步錯誤
實際應用場景
- Web 爬蟲
- API 客戶端
- 資料庫操作
- 檔案 I/O
注意事項
非同步不是萬能的。對於 CPU 密集型任務,多進程可能更適合。選擇正確的工具很重要。