Убить нить через промежуток времени в python - PullRequest
0 голосов
/ 21 января 2020

У меня есть код, который создает некоторых рабочих:

def create_workers():
    for _ in range(50):
        t = threading.Thread(target=work)
        t.daemon = True
        t.start()

и Queue (это сканер) work, который иногда зависает.

def work():
    while True:
        url = queue.get()
        ScrapperSpider.crawl_page(threading.current_thread().name, url)
        queue.task_done()

Есть два другие функции:

def create_jobs():
    queue.join()


def crawl():
    create_jobs()

и основной:

create_workers()
while True :
    if len(ScrapperSpider.queue)> 0:
        create_jobs()
    else :
        queue.put(somthing)
        ScrapperSpider.queue.add(somthin)
 crawl()

Проблема с queue.join(). Он вешает все нити и ждет их освобождения. Есть ли способ освободить эту тему?

...