Python多線程正確用法實(shí)例解析
python 里有一個 threading 模塊,其中提供了一個函數(shù):
threading.Thread(target=function, args=(), kwargs={})
function 是開發(fā)者定義的線程函數(shù),
args 是傳遞給線程函數(shù)的參數(shù),必須是tuple類型,
kwargs 是可選參數(shù),字典類型。
調(diào)用 threading.Thread 之后,會創(chuàng)建一個新的線程,參數(shù) target 指定線程將要運(yùn)行的函數(shù),args 和 kwargs 則指定函數(shù)的參數(shù)來執(zhí)行
function 函數(shù)。
改寫一下前面的代碼,將抓取的部分放在一個函數(shù)中:
def get_weather(city):
req = requests.get('http://wthrcdn.etouch.cn/weather_mini?city=%s' % 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()
之后,程序采用了三個循環(huán),在第一個循環(huán)中,針對每一個城市,都創(chuàng)建了一個新線程,并將線程加入到一個列表中,用于之后的啟動。
threads = [] cities = ['北京', '南京', '上海', '深圳', '廣州', '杭州', '蘇州', '天津', '西安', '成都'] files = range(len(cities))for i in files: # 創(chuàng)建線程 t = threading.Thread(target=get_weather, args=(cities[i],)) threads.append(t)
在第二個循環(huán)中,start 正式開啟子線程;
for i in files: threads[i].start()
在第三個循環(huán)中,join 用來同步數(shù)據(jù),主線程運(yùn)行到這一步,將會停下來等待子線程運(yùn)行完畢。沒有這句,主線程則會忽略子線程,運(yùn)行
完自己的代碼后結(jié)束程序。
for i in files: threads[i].join()
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 用Python生成器實(shí)現(xiàn)微線程編程的教程
- Python函數(shù)生成器原理及使用詳解
- python實(shí)現(xiàn)隨機(jī)加減法生成器
- python顏色隨機(jī)生成器的實(shí)例代碼
- Python字典生成式、集合生成式、生成器用法實(shí)例分析
- 詳解C語言和Python中的線程混用
- Python 如何創(chuàng)建一個線程池
- Python3 socket即時通訊腳本實(shí)現(xiàn)代碼實(shí)例(threading多線程)
- python多線程實(shí)現(xiàn)同時執(zhí)行兩個while循環(huán)的操作
- python 實(shí)現(xiàn)兩個線程交替執(zhí)行
- Python 使用生成器代替線程的方法
相關(guān)文章
python數(shù)據(jù)分析工具之 matplotlib詳解
對于 Python 來說,matplotlib 是最著名的繪圖庫,它主要用于二維繪圖,當(dāng)然也可以進(jìn)行簡單的三維繪圖。這篇文章主要介紹了python數(shù)據(jù)分析工具之 matplotlib的相關(guān)知識,需要的朋友可以參考下2020-04-04
PyQt實(shí)現(xiàn)異步數(shù)據(jù)庫請求的實(shí)戰(zhàn)記錄
開發(fā)軟件的時候不可避免要和數(shù)據(jù)庫發(fā)生交互,但是有些 SQL 請求非常耗時,如果在主線程中發(fā)送請求,可能會造成界面卡頓,本文將介紹一種讓數(shù)據(jù)庫請求變得和前端的 ajax 請求一樣簡單,希望對大家有所幫助2023-12-12
Pytorch上下采樣函數(shù)之F.interpolate數(shù)組采樣操作詳解
最近用到了上采樣下采樣操作,pytorch中使用interpolate可以很輕松的完成,下面這篇文章主要給大家介紹了關(guān)于Pytorch上下采樣函數(shù)之F.interpolate數(shù)組采樣操作的相關(guān)資料,需要的朋友可以參考下2022-04-04
對DataFrame數(shù)據(jù)中的重復(fù)行,利用groupby累加合并的方法詳解
今天小編就為大家分享一篇對DataFrame數(shù)據(jù)中的重復(fù)行,利用groupby累加合并的方法詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-01-01
Python基于詞頻排序?qū)崿F(xiàn)快速挖掘關(guān)鍵詞
這篇文章主要為大家詳細(xì)介紹了Python如何基于詞頻排序?qū)崿F(xiàn)快速挖掘關(guān)鍵詞功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2023-03-03
Numpy中array數(shù)組對象的儲存方式(n,1)和(n,)的區(qū)別
本文主要介紹了Numpy中array數(shù)組對象的儲存方式(n,1)和(n,)的區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-04-04

