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 隨機(jī)數(shù)生成的代碼的詳細(xì)分析
如果你對python隨機(jī)數(shù)生成的實(shí)際應(yīng)用有不解之處,你就可以通過以下的內(nèi)容對其進(jìn)行了解,以下十九相關(guān)內(nèi)容的介紹2011-05-05利用Opencv中Houghline方法實(shí)現(xiàn)直線檢測
這篇文章主要為大家詳細(xì)介紹了利用Opencv中的Houghline方法進(jìn)行直線檢測,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-02-02Python3.6實(shí)現(xiàn)連接mysql或mariadb的方法分析
這篇文章主要介紹了Python3.6實(shí)現(xiàn)連接mysql或mariadb的方法,結(jié)合實(shí)例形式分析了Python3.6針對mysql或mariadb數(shù)據(jù)庫操作的相關(guān)模塊安裝、數(shù)據(jù)庫與表的創(chuàng)建、數(shù)據(jù)庫連接等操作技巧與注意事項(xiàng),需要的朋友可以參考下2018-05-05Python中讓MySQL查詢結(jié)果返回字典類型的方法
這篇文章主要介紹了Python中讓MySQL查詢結(jié)果返回字典類型的方法,默認(rèn)情況下Mysql返回的是元組類型,本文實(shí)現(xiàn)了返回字典類型,需要的朋友可以參考下2014-08-08Python利用字典將兩個通訊錄文本合并為一個文本實(shí)例
這篇文章主要介紹了Python利用字典將兩個通訊錄文本合并為一個文本實(shí)例,具有一定借鑒價值,需要的朋友可以參考下2018-01-01