python的一些常用技術(二)

jpx發表於2024-07-17

三、python多執行緒

由於全域性直譯器鎖 (GIL) 的存在,標準的 CPython 直譯器並不支援真正的並行執行 Python 位元組碼。GIL 限制了在任何時刻只有一個執行緒可以執行 Python 位元組碼,這意味著多執行緒在 CPU 密集型任務中無法充分利用多核 CPU 的優勢。但對於 I/O 密集型任務(例如網路操作、檔案 I/O),多執行緒仍然是有效的併發處理方式,因為在這些操作等待完成時,GIL 會釋放,讓其他執行緒繼續執行。

四、python非同步:python 的非同步程式設計是一種併發程式設計方式,旨在在 I/O 密集型任務(如網路請求、檔案 I/O 等)中提高效能和效率。Python 中主要使用 asyncio 庫來實現非同步程式設計。

1、非同步程式設計相關的一些庫:

  • asyncio:Python 標準庫,提供了非同步 I/O、事件迴圈、協程和任務等功能。
  • aiohttp:用於非同步 HTTP 請求的庫。
  • aiomysql:用於非同步 MySQL 資料庫操作的庫。
  • aioredis:用於非同步 Redis 操作的庫。

2、關鍵概念:

  1. 事件迴圈:驅動非同步程式的核心。事件迴圈等待事件(如 I/O 操作完成),並將事件分派給相應的協程處理。
  2. 協程:使用 async def 定義的函式,可以在需要時暫停執行,並在將來某個時刻恢復執行。
  3. 任務:對協程的封裝,使其能夠在事件迴圈中執行。
  4. Future:表示非同步操作的最終結果或失敗。

相關文章