[英]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.