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