0
如何修改代碼(而不使用遞歸調用),以便只在隊列大小不超過100,000個項目時纔將其添加到隊列中。 否則,它會等待5秒鐘處理隊列項目(項目一旦被處理後將從隊列中刪除),然後在隊列中有空間時再次開始添加項目。否則等待另外5秒(依此類推)。註釋「#」中的部分是我建議的功能。我不介意遞歸解決方案,只要它是一個遞歸的尾調用優化方法,所以我不會遇到遞歸深度限制問題。將遞歸程序僅轉換爲循環
url_input_file = array of strings
def worker():
while threading.active_count() > 0:
url = q.get()
sendRequest(url)
q.task_done()
q = Queue()
for threads in range(1000):
t = threading.Thread(target = worker)
t.daemon = True
t.start()
for url in url_input_file:
#if len(q) < 100000:
q.put(url)
#else:
#time.sleep(5)
#try to send it in the queue again
q.join()
你爲什麼不只是做一個有界隊列,所以'put'塊直到工人完成了足夠的工作? – user2357112
什麼版本的Python? – kevin628