python 多程序與多執行緒

2021-10-01 09:24:42 字數 1819 閱讀 7151

由於python gil的存在,讓python

多執行緒很雞肋,很多時候如果有併發的需求,則選擇多程序來實現,但是多程序是很消耗資源的,而且程序之間不能資源共享,而且還會受到機器cpu核心數目的限制,因此在特定場景下針對不同需求會有一些取捨。傳聞對於io密集性的操作,比如,處理多個http 的請求,其實python

多執行緒是完全可以發揮作用的,這種方式比多程序要高效的多(還好有高階python開發的好**指點,不然一直認為python

多執行緒就是廢材,真外行了,在此貼出他的私人部落格  )。為了驗證這一偉大結論,特此設計乙個對比實驗

import time

from flask import flask

def func():

time.sleep(2) # 模擬服務需要2秒後響應過程

return "get"

if __name__ == '__main__':

import time

import requests

from threading import thread

url = ""

res_list =

t_list =

def func(x):

print("thread: {}".format(x))

if __name__ == '__main__':

# 開啟10個執行緒

如圖所示,當啟動多個請求數目大於cpu核數時(我本機是4核心),多執行緒消耗時間明顯好於多程序,因為本身是io操作,沒有高強度計算,也不會連續使用cpu,僅僅是乙個指令的觸發操作,因此在請求這個指令觸發一瞬間,執行過程已經交給網路傳輸了,而與此同時執行緒已經切換到了下乙個執行緒,所以當把啟動執行緒增加到100個時候,時間依舊會接近2秒,因為執行緒切換也會有開銷,所以不可能完全等於2秒。

綜上所述,實踐是檢驗真理的唯一標準!

Python 多執行緒與多程序

前言 以前玩單機或者玩小資料集,都基本不用多執行緒或多程序都能基本滿足需求了 所以沒怎麼了解這方面的東西。但現在玩幾百萬甚至上千萬的資料,甚至集群等東西之後,就有必要學習多執行緒或多程序了。在python中首先要匯入相關的模組 import threading as td import multip...

python 多執行緒與多程序

程序與執行緒的區別 程序 應用程式的執行例項,每乙個執行中的程式就是乙個程序 執行緒 程序的組成部分,乙個程序可以擁有多個執行緒 在多執行緒中,會有乙個主線程來完成整個程序從開始到結束的全部操作,而其他的執行緒會在主線程的執行過程中被建立或退出。python景區賣票系統 多執行緒的應用 import...

Python多執行緒與多程序

python多執行緒與多程序 程序 process 和執行緒 thread 是非常抽象的概念,也是程式設計師必需掌握的核心知識!多程序和多執行緒程式設計對於 的併發執行,提公升 效率和縮短執行時間至關重要。程序 process 和執行緒 thread 程序是作業系統分配資源的最小單元 執行緒是作業系...