關於Django多程序多執行緒詳解

2021-09-21 18:03:34 字數 1360 閱讀 9717

#4 使用 uwsgi 伺服器啟動 django

#5 總結關於django的多執行緒問題

python3.7.3

django==2.0.7

uwsgi==2.0.18

django 原生為單線程式,當第乙個請求沒有完成時,第二個請求輝阻塞,知道第乙個請求完成,第二個請求才會執行。

django就沒有用非同步,通過執行緒來實現併發,這也是wsgi普遍的做法,跟tornado不是乙個概念

官方文件解釋django自帶的server預設是多執行緒

[外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳(img-nmyhn**4-1591867681155)(

django開兩個介面,第乙個介面sleep(20),另乙個介面不做延時處理(大概耗時幾毫秒)

先請求第乙個介面,緊接著請求第二個介面,第二個介面返回資料,第乙個介面20秒之後返回資料

證明django的server是預設多執行緒

重複上述步驟

[外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳(img-umj9iyfh-1591867681157)(

# 在django專案目錄下 demo工程名

uwsgi --http 0.0.0.0:8000 --file demo/wsgi.py

經過上述的步驟測試,發現在這種情況下啟動django專案,uwsgi也是單執行緒,訪問介面需要"排隊"

不給uwsgi加程序,uwsgi預設是單程序單執行緒

# processes: 程序數 # processes 和 workers 一樣的效果

# threads : 每個程序開的執行緒數

經過測試,介面可以"同時"訪問,uwsgi提供多執行緒

[外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳(img-dpnumpna-1591867681159)(

[外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳(img-lbjzbsuv-1591867681160)(

關於多程序與多執行緒

首先,要實現多工,通常我們會設計master worker模式,master負責分配任務,worker負責執行任務,因此,多工環境下,通常是乙個master,多個worker。如果用多程序實現master worker,主程序就是master,其他程序就是worker。如果用多執行緒實現master...

關於多執行緒和多程序

關於多執行緒和多程序 假設 條件一 需要在10個省都各建造一條鐵路 程式 條件二 每個省都有五支施工隊 多核cpu 條件三 鐵路建造獲取控制中心發布開始時間 程式發布命令 條件四 全部物料最多 20個施工隊同時開工 計算機效能上限 方案一 控制中心命令第乙個省的乙個施工隊開始施工,完成後再命令第二個...

多執行緒 多程序?

這幾天在思考如何改進原型在多個客戶端的情況下的效能,特地溫習了一下多程序和多執行緒的一些知識。在linux下程序的程序和執行緒在核心看來區別很小,都是乙個可排程單元,都擁有記憶體管理結構等等。但是關鍵的差別是程序的資源都是私有的,而執行緒則是和別人共享的,所以執行緒的上下文切換可能比程序的開銷要小很...