Python多線程正確用法實(shí)例解析
python 里有一個(gè) threading 模塊,其中提供了一個(gè)函數(shù):
threading.Thread(target=function, args=(), kwargs={})
function 是開(kāi)發(fā)者定義的線程函數(shù),
args 是傳遞給線程函數(shù)的參數(shù),必須是tuple類(lèi)型,
kwargs 是可選參數(shù),字典類(lèi)型。
調(diào)用 threading.Thread 之后,會(huì)創(chuàng)建一個(gè)新的線程,參數(shù) target 指定線程將要運(yùn)行的函數(shù),args 和 kwargs 則指定函數(shù)的參數(shù)來(lái)執(zhí)行
function 函數(shù)。
改寫(xiě)一下前面的代碼,將抓取的部分放在一個(gè)函數(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') # 沒(méi)有'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()
之后,程序采用了三個(gè)循環(huán),在第一個(gè)循環(huán)中,針對(duì)每一個(gè)城市,都創(chuàng)建了一個(gè)新線程,并將線程加入到一個(gè)列表中,用于之后的啟動(dò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)
在第二個(gè)循環(huán)中,start 正式開(kāi)啟子線程;
for i in files: threads[i].start()
在第三個(gè)循環(huán)中,join 用來(lái)同步數(shù)據(jù),主線程運(yùn)行到這一步,將會(huì)停下來(lái)等待子線程運(yùn)行完畢。沒(méi)有這句,主線程則會(huì)忽略子線程,運(yùn)行
完自己的代碼后結(jié)束程序。
for i in files: threads[i].join()
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 用Python生成器實(shí)現(xiàn)微線程編程的教程
- Python函數(shù)生成器原理及使用詳解
- python實(shí)現(xiàn)隨機(jī)加減法生成器
- python顏色隨機(jī)生成器的實(shí)例代碼
- Python字典生成式、集合生成式、生成器用法實(shí)例分析
- 詳解C語(yǔ)言和Python中的線程混用
- Python 如何創(chuàng)建一個(gè)線程池
- Python3 socket即時(shí)通訊腳本實(shí)現(xiàn)代碼實(shí)例(threading多線程)
- python多線程實(shí)現(xiàn)同時(shí)執(zhí)行兩個(gè)while循環(huán)的操作
- python 實(shí)現(xiàn)兩個(gè)線程交替執(zhí)行
- Python 使用生成器代替線程的方法
相關(guān)文章
python 隨機(jī)數(shù)生成的代碼的詳細(xì)分析
如果你對(duì)python隨機(jī)數(shù)生成的實(shí)際應(yīng)用有不解之處,你就可以通過(guò)以下的內(nèi)容對(duì)其進(jìn)行了解,以下十九相關(guān)內(nèi)容的介紹2011-05-05
利用Opencv中Houghline方法實(shí)現(xiàn)直線檢測(cè)
這篇文章主要為大家詳細(xì)介紹了利用Opencv中的Houghline方法進(jìn)行直線檢測(cè),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-02-02
Python3.6實(shí)現(xiàn)連接mysql或mariadb的方法分析
這篇文章主要介紹了Python3.6實(shí)現(xiàn)連接mysql或mariadb的方法,結(jié)合實(shí)例形式分析了Python3.6針對(duì)mysql或mariadb數(shù)據(jù)庫(kù)操作的相關(guān)模塊安裝、數(shù)據(jù)庫(kù)與表的創(chuàng)建、數(shù)據(jù)庫(kù)連接等操作技巧與注意事項(xiàng),需要的朋友可以參考下2018-05-05
Python中讓MySQL查詢(xún)結(jié)果返回字典類(lèi)型的方法
這篇文章主要介紹了Python中讓MySQL查詢(xún)結(jié)果返回字典類(lèi)型的方法,默認(rèn)情況下Mysql返回的是元組類(lèi)型,本文實(shí)現(xiàn)了返回字典類(lèi)型,需要的朋友可以參考下2014-08-08
Python利用字典將兩個(gè)通訊錄文本合并為一個(gè)文本實(shí)例
這篇文章主要介紹了Python利用字典將兩個(gè)通訊錄文本合并為一個(gè)文本實(shí)例,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-01-01

