Как отследить то, что все потоки завершились (Python)
в цикле создаются потоки, и нужно как-то отследить то, что все они закончили свою работу(или ожидать, пока они все не закончат работу), перед тем, как функция снова вызовется.
def some():
for num, url in enumerate(urls):
thread = threading.Thread(target=download, args=[num + 1, url])
thread.start()
while True:
some()
Ответы (2 шт):
Автор решения: CrazyElf
→ Ссылка
Вроде как-то так, например:
def some():
threads = []
for num, url in enumerate(urls):
thread = threading.Thread(target=download, args=[num + 1, url])
thread.start()
threads.append(thread)
return threads
threads = some()
for thread in threads:
thread.join()
Автор решения: gil9red
→ Ссылка
Попробуйте через Pool.map:
from multiprocessing.dummy import Pool as ThreadPool
pool = ThreadPool()
results = pool.map(download, enumerate(urls, 1))
print(results)
PS.
Если в enumerate вторым параметром передать 1, то индексация будет с 1, а не 0