
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('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()
之后,程式采用了三個回圈,在第一個回圈中,針對每一個城市,都創建了一個新執行緒,并將執行緒加入到一個串列中,用于之后的啟動,
threads = [] cities = ['北京', '南京', '上海', '深圳', '廣州', '杭州', '蘇州', '天津', '西安', '成都'] files = range(len(cities))for i in files: # 創建執行緒 t = threading.Thread(target=get_weather, args=(cities[i],)) threads.append(t)
在第二個回圈中,start 正式開啟子執行緒;
for i in files: threads[i].start()
在第三個回圈中,join 用來同步資料,主執行緒運行到這一步,將會停下來等待子執行緒運行完畢,沒有這句,主執行緒則會忽略子執行緒,運行
完自己的代碼后結束程式,
for i in files: threads[i].join()
最后注意:光理論是不夠的,這里順便免費送大家一套2020最新python入門到高級專案實戰視頻教程,可以去小編的Python交流.裙 :七衣衣九七七巴而五(數字的諧音)轉換下可以找到了,還可以跟老司機交流討教!
本文的文字及圖片來源于網路加上自己的想法,僅供學習、交流使用,不具有任何商業用途,著作權歸原作者所有,如有問題請及時聯系我們以作處理,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/138093.html
標籤:Python
