溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

用實例解析Python多線程的正確用法

發(fā)布時間:2020-07-20 15:33:01 來源:億速云 閱讀:154 作者:小豬 欄目:開發(fā)技術(shù)

這篇文章主要用實例解析Python多線程的正確用法,內(nèi)容清晰明了,對此有興趣的小伙伴可以學(xué)習(xí)一下,相信大家閱讀完之后會有幫助。

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 指定線程將要運行的函數(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ù),主線程運行到這一步,將會停下來等待子線程運行完畢。沒有這句,主線程則會忽略子線程,運行

完自己的代碼后結(jié)束程序。

for i in files:
  threads[i].join()

看完上述內(nèi)容,是不是對用實例解析Python多線程的正確用法有進一步的了解,如果還想學(xué)習(xí)更多內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI