Можно ли перезапустить завершенный поток в многопоточности Python? - PullRequest
0 голосов
/ 31 октября 2018

Я хочу перезапустить прерванный поток в многопоточности. Первоначально моя очередь имеет только один URI. Позже я поставлю несколько URI в очередь. Я начал свой процесс с 5 потоков. Из этого 4 потока будут завершены в самом начале. Так как в моей очереди только один URI. После успешного завершения первого URI он помещает еще 5-10 URI в одну и ту же очередь. Но он будет работать только с одним потоком. Можно ли перезапустить завершенные темы? Пожалуйста, найдите мой пример кода и поделитесь своими идеями или предоставьте альтернативный способ для этого.

import Queue
import requests
from threading import Thread
class MyThread():
    def __init__(self):
        self.tc_queue = Queue.Queue()
        self.no_threads = 5
        self.tc_queue.put((<uri-1>)) #root URI
        self.success_uri_list = []

    def worker(self):
        while not self.tc_queue.empty():
            test_case = self.__tc_queue.get()
            resp = requests.get(test_case[0])
            if resp.status_code == 200:
                self.success_uri_list.append(uri)
                # from every uri response we'll get some more uri's and we put it in same queue
                for uri in uri_list:
                    self.tc_queue.put((<uri>))


    def manager(self):
        threads = []
        for i in range(self.no_threads):
            th = Thread(target = self.worker)
            th.start()
            threads.append(th)
        for th in threads:
            th.join()

thrd = MyThread()
thrd.manager()
...