python第二十六天

2021-10-10 05:48:49 字數 3661 閱讀 9560

import time

from datetime import datetime

defdownload

(name)

:print

) time.sleep(3)

print

)download(

'信條'

)download(

'加勒比海盜'

)download(

'摔跤吧爸爸'

)# 程序預設有乙個執行緒,這個執行緒叫主線程;其他的執行緒的都叫子執行緒。

# python中threading模組中thread類的物件就是執行緒物件

# (程式中需要多少個執行緒就建立多少個thread類或者它的子類的物件)

defdownload

(name)

:print

) time.sleep(3)

print

)# 1.建立執行緒物件

# thread(target=函式, args=引數)

# # 函式 - 傳乙個函式,這個函式就是需要在子執行緒中呼叫的函式

# 引數 - 傳乙個元組,預設是();元組中的元素就是在呼叫函式的時候需要傳遞的實參

t1 = thread(target=download, args=

('沉默的羔羊',)

)t2 = thread(target=download, args=

('觸不可及',)

)t3 = thread(target=download, args=

('星際穿越',)

)t4 = thread(target=download, args=

('功夫',)

)t5 = thread(target=download, args=

('逃學威龍',)

)# 2.啟動執行緒 - 在子執行緒中執行任務

# 執行緒物件.start()

t1.start(

)t2.start(

)t3.start(

)t4.start(

)t5.start(

)# f_names = ['沉默的羔羊', '觸不可及', '星際穿越', '功夫', '逃學威龍']

# for name in f_names:

# t = thread(target=download, args=(name,))

# t.start()

defget_net_data()

: url =

''headers =

response = requests.get(url, headers=headers)

if response.status_code ==

200:

data_analysis(response.text)

else

:print

('請求失敗!'

, response)

defdata_analysis

(data)

: html = etree.html(data)

img_urls = html.xpath(

'//div[@class="mg-top-20 all_product"]/ul/li/a/img/@src'

)for url in img_urls:

t = thread(target=download_image, args=

(url,))

t.start(

)# 每次執行10個執行緒的任務

thread_list =

for url in img_urls:

t = thread(target=download_image, args=

(url,))

thread_list =

iter

(thread_list)

while thread_list:

print()

try:

t_start =

for _ in

range(10

):t =

next

(thread_list)

t.start(

)except stopiteration:

print

('取完了!'

)break

for t in t_start:

t.join(

)print()

defdownload_image

(url)

: response = requests.get(url)

if response.status_code ==

200:

# 儲存多張

('沉默的羔羊',)

)t2 = thread(target=download, args=

('觸不可及',)

)t3 = thread(target=download, args=

('星際穿越',)

)t4 = thread(target=download, args=

('功夫',)

)t5 = thread(target=download, args=

('逃學威龍',)

)# 1. join的用法:

"""執行緒物件.join()

**段"""

defdemo2()

: t1.start(

) t2.start(

) t1.join(

) t2.join(

) t3.start(

) t4.start(

) t5.start(

)def

demo1()

:# 記錄開始時間

start = time.time(

) t1.start(

) t2.start(

) t3.start(

) t4.start(

) t5.start(

) t1.join(

) t2.join(

) t3.join(

) t4.join(

) t5.join(

)# 記錄結束時間

print

('*************************=='

) end = time.time(

)print

(, end-start)

demo2(

)

第二十六天總結

求多源 無負權邊的最短路 floyd演算法 floyd warshall演算法是解決任意兩點間的最短路徑的一種演算法,可以正確處理有向圖或負權的最短路徑問題,同時也被用於計算有向圖的傳遞閉包。floyd warshall演算法的時間複雜度為o n3 空間複雜度為o n2 最小生成樹 給定乙個無向圖,...

打卡第二十六天

在組合數合裡,貝爾數給出了集合劃分的數目,以數學家埃里克 坦普爾 貝爾 eric temple bell 命名,是組合數學中的一組整數數列。貝爾三角形類似於楊輝三角,只是其中各個項的計算規則不同。其規則如下 1.第一行第一項是1 2.對於n 1,第n行第一項等同第n 1行最後一項。3.對於m,n 1...

第二十六天Python學習記錄

追加檔案內容 mode a 會加在檔案內容後面 ab 以二進位制方式追加 以r開啟的檔案是不能執行read操作的 混合模式 r 先讀後寫 類似於追加 w 寫讀模式 先寫後讀 寫之前會把之前的內容清空 檔案的其他操作 fileno flush readable readline seek tell s...