2015-03-03 3 views
3

Работая над вилкой чей-то кода, я натолкнулся на следующее, чтобы остановить главный поток до тех пор, пока не будут выполнены все подтемы:Сон вместо 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, и выглядят идентично поведению, которое предполагает моя реализация, однако это перспектива владельца проекта.

+1

FWIW Мне неизвестны какие-либо специфические для платформы причины 'thread.join()' не должны использоваться. Возможно, вы могли бы спросить у сопровождающего, какие вопросы они беспокоят? –

+1

Возможно, вам лучше попросить человека, который отрицает запрос на тягу ... – dano

+0

Он такой человек, который скорее предпочитает людей, а не отнимает у него время. Если в ближайшие несколько часов ответа не будет, я отправлю ему этот вопрос. И я попробовал Google, так что я пытаюсь здесь. – Aviator45003

ответ

0

Оказалось, что у сопровождающего была собственная пользовательская исправленная версия безплатного питона, которая сломала API на одном из его компьютеров.

 Смежные вопросы

  • Нет связанных вопросов^_^