Как сделать пополнение очереди и отправку задания потокам? Python
Такая ситуация возникла, не могу найти решение. Пишу многопоточный парсер, ссылки которые нужно обработать постоянно генерируются. Мне нужно реализовать раздачу этих ссылок потокам. Решил сделать через threading и queue. Написал такой код, для примера. В данном коде мне нужно каким-то образом, понять когда очередь стало пустой, пополнить ее и заставить потоки выполнить над ней какую-то функцию.
import threading
from queue import Queue
import random
class Downloader(threading.Thread):
def __init__(self, queue):
"""Инициализация потока"""
threading.Thread.__init__(self)
self.queue = queue
def run(self):
"""Запуск потока"""
while True:
num = self.queue.get()
self.output(url)
# Отправляем сигнал о том, что задача завершена
self.queue.task_done()
def output(self, url):
print(url, threading.current_thread())
def generate():
number.append(random.randrange(1, 10, 1))
def main(numbers):
"""
Запускаем программу
"""
queue = Queue()
# Запускаем потом и очередь
for i in range(2):
t = Downloader(queue)
t.setDaemon(True)
t.start()
#
for num in numbers:
queue.put(num)
# Ждем завершения работы очереди
queue.join()
if __name__ == "__main__":
number = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
main(number)