Python中的多執行緒如何正確運用?案例詳解

2022-05-16 09:23:23 字數 1438 閱讀 5139

python 裡有乙個 threading 模組,其中提供了乙個函式:

threading.thread(target=function, args=(), kwargs={})
function 是開發者定義的執行緒函式,

args 是傳遞給執行緒函式的引數,必須是tuple型別,

kwargs 是可選引數,字典型別。

呼叫 threading.thread 之後,會建立乙個新的執行緒,引數 target 指定執行緒將要執行的函式,args 和 kwargs 則指定函式的引數來執行 

function 函式。

改寫一下前面的**,將抓取的部分放在乙個函式中:

def get_weather(city):

req = requests.get('' % city)

dic_city = req.json()

city_data = dic_city.get('data')  # 沒有』data『的話返回 

print(city_data.get('city'))    if city_data:

city_forecast = city_data['forecast'][0]  # 下面的都可以換成'get'方法

print(city_forecast.get('date'))

print(city_forecast.get('high'))

print(city_forecast.get('low'))

print(city_forecast.get('type'))    else:

print('未獲得')

print()

之後,程式採用了三個迴圈,在第乙個迴圈中,針對每乙個城市,都建立了乙個新執行緒,並將執行緒加入到乙個列表中,用於之後的啟動。

threads = 

cities = ['北京', '南京', '上海', '深圳', '廣州', '杭州', '蘇州', '天津', '西安', '成都']

files = range(len(cities))for i in files:  # 建立執行緒

t = threading.thread(target=get_weather, args=(cities[i],))

在第二個迴圈中,start 正式開啟子執行緒;

for i in files:

threads[i].start()

在第三個迴圈中,join 用來同步資料,主線程執行到這一步,將會停下來等待子執行緒執行完畢。沒有這句,主線程則會忽略子執行緒,執行

完自己的**後結束程式。

for i in files:threads[i].join()
最後注意:

python中多執行緒 Python之多執行緒

python之多執行緒 一 概念 1 多工可以由多程序完成,也可以由乙個程序內的多執行緒完成。程序是由若干的執行緒組成,乙個程序至少有乙個程序。執行緒是作業系統直接支援的執行單元,天賜高階預壓通常都是內建多執行緒的支援,python的執行緒是真正的posix thread而不是模擬出來的執行緒。2 ...

python中的多執行緒

python中的多執行緒是假的多執行緒!為什麼這麼說,我們先明確乙個概念,全域性直譯器鎖 gil global interpreter lock python 的執行由python虛擬機器 直譯器 來控制,同時只有乙個執行緒在執行 對python虛擬機器的訪問由全域性直譯器鎖 gil 來控制,正是這...

python中的多執行緒

當python程式執行時會預設建立乙個主線程,除了主線程之外我們還可以建立別的執行緒,可以使用threading引入 import threading import time defthinking for i in range 3 threading.current thread 檢視當前正在執行...