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...