Python 多工 程序 執行緒 協程

2022-06-16 04:24:13 字數 685 閱讀 5214

目錄

程序建立

執行緒建立

協程建立

多程序(multiprocessing)

多執行緒(threading)

程序

執行緒

多程序

多執行緒

程序池 pool

執行緒池 threadpool

程序是資源分配的基本單位。

執行緒是作業系統排程的單位。

程序切換需要的資源很大,效率很低。

執行緒切換需要的資源一般,效率一般(在不考慮gil全域性解釋鎖的情況下)。

協程切換任務資源很小,效率高。

多程序、多執行緒根據cpu核數不一樣可能是並行的,但是協程是在乙個執行緒中所以是併發的。

執行緒和協程推薦在io密集型的任務(比如網路io場景)中使用,而在cpu密集型的任務中,表現較差。

對於cpu密集型的任務,則需要多個程序,繞開gil的限制,利用所有可用的cpu核心,提高效率。

所以大併發下的最佳實踐就是多程序+協程,既充分利用多核,又充分發揮協程的高效率,可獲得極高的效能。

Python 多工,程序 執行緒 協程

cpu中計算的東西叫做 核心 乙個核 同一時刻 只能做一件事情 例子 把教室看做乙個cpu,教室中有乙個人,這個人看做 核心 並行 多個任務同時執行,真正的多工 併發 假的多工,依靠時間片輪詢,讓多個任務隨機分配時間執行 時間片輪詢機制 cpu給多個任務隨機分配執行時間去執行,由於cpu執行速度非常...

Python實現多工(協程 執行緒 程序)

from gevent import monkey import gevent import urllib.request monkey.patch all def my download url print get s url resp urllib.request.urlopen url dat...

python多工 執行緒 程序 協程 1

import time def sing 唱歌5秒鐘 for i in range 5 print 正在唱 雞你太美 time.sleep 1 def dance 跳舞5秒鐘 for i in range 5 print 正在跳 雞你太美 time.sleep 1 def main sing dan...