У меня есть список Auf URL-адресов, которые должны быть выбраны параллельно, поэтому я использую резьб:Python Threading ждать возвращения
for url in urls:
thread = fetch_single(url)
threads.append(thread)
thread.start()
for thread in threads:
thread.join()
# thread.html() is always "None" here:
thread.html()
Мой потоковая рабочий класс:
class fetch_single(threading.Thread):
def __init__ (self, url):
threading.Thread.__init__(self)
self.url = url
self.response = None
def run(self):
self.response = consumer.fetch(self.url)
def html(self):
return self.response.getData()
Моя проблема заключается в line self.response = consumer.fetch(self.url)
. Как я могу добиться, чтобы поток ожидал ответа от подпрограммы/класса?
Есть ли более отзывчивый подход без сна и активного ожидания? Что-то вроде прерывания (назад к основному процессу, чтобы проверить, завершены ли все потоки) после прекращения потока? Я хочу использовать его как веб-сервис, и поэтому время отклика имеет решающее значение ... – RoyalKnight
@RoyalKnight Вы можете использовать 'threads.join()', и это должно дождаться завершения всех процессов. Вам просто нужно заменить метод 'while .. sleep', по крайней мере, он должен работать с моей моделью. Но мне нужно будет дважды проверить. – Torxed
Но это то, что я уже реализовал? Я понимаю, что 'thread.join()' должен ждать, пока поток не будет завершен, поэтому результат не должен быть 'None'? – RoyalKnight