簡體   English   中英

在運行時同步python線程

[英]synchronizing python thread during runtime

我有一個Python腳本,該腳本發出800,000個HTTP請求,以確保它們回送200個請求。 如果在變量中捕獲404,則為URL路徑。 將該網址參數化為800,000個不同的ID。 我正在使用100個不同的線程來節省時間,最后我又將它們重新加入以獲取404'ed等網址數量,

但是大約需要2個小時才能完成,並且必須等待獲得結果。 我應該能夠在運行時中的任何時候知道到目前為止完成了多少個id,完成了404個等操作,該怎么辦?

runners = []
nthreads=100

chunk_size = ceil(len(ids)/float(nthreads))
for i in range(nthreads):
    runners.append(HeadendChecker(i*chunk_size, min(len(dac_ids), chunk_size*(i+1))))

for thread in runners:
    thread.start()

list_of_bad_ids = []
for thread in runners:
    thread.join()
    if thread.get_bad_ids() != None:
        list_of_bad_ids = list_of_bad_ids + thread.get_bad_ids()

您可以使用隊列/隊列對象,而不是每個線程都存儲200和404。

您可以將現有線程轉換為生產者:它們產生(狀態,URL ID)元組,並放入共享隊列中。

然后,您可以添加一個分析器線程,該線程將使用此隊列中的項目,並在此過程中打印狀態消息,並以方便的方式存儲結果以進行進一步處理(“進一步處理”是指在所有工作線程都被處理之后進行的任何處理)完)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM