Работая над вилкой чей-то кода, я натолкнулся на следующее, чтобы остановить главный поток до тех пор, пока не будут выполнены все подтемы:Сон вместо thread.join() для устаревших причин платформы
while(True):
if not any([thread.isAlive() for thread in self.threads]):
break
else:
time.sleep(1)
Это казалось мне пустой тратой времени процессора; было бы проще и менее требовательно к процессору просто подождать .join() подпотоков.
Здесь я должен отметить, что все субтитры были установлены как «демоны» во время создания.
я заменил этот код с моим:
# Luckily, threading.join() works just fine.
for thread in self.threads:
thread.join()
Когда я передал запрос тянуть, мне сказали «не будет сливаться совершать XYZ, спать там на платформу унаследованных причины.»
Какие причины могут привести к тому, что эта многословие требуется? Он не жаловался на мое использование .join() где-нибудь еще, только для одной задачи.
EDIT
Довод был сделан человеком, который аннулирован мой запрос тянуть, что Stackless Питона присоединиться() работает несколько иначе, по умолчанию. Я не вижу его в документах, но, возможно, это правда. Документы: here, и выглядят идентично поведению, которое предполагает моя реализация, однако это перспектива владельца проекта.
FWIW Мне неизвестны какие-либо специфические для платформы причины 'thread.join()' не должны использоваться. Возможно, вы могли бы спросить у сопровождающего, какие вопросы они беспокоят? –
Возможно, вам лучше попросить человека, который отрицает запрос на тягу ... – dano
Он такой человек, который скорее предпочитает людей, а не отнимает у него время. Если в ближайшие несколько часов ответа не будет, я отправлю ему этот вопрос. И я попробовал Google, так что я пытаюсь здесь. – Aviator45003