понимание thread.join (тайм-аут)

ТакТайм-аут param, для потока, должен остановить поток послеТайм-аут секунд (если это еще не закончено).

В моем программном обеспечении я пытаюсь заменитьQueue.Queue.join () (он содержит элемент для каждого потока: каждый поток запускает Queue.Queue.task_done ()), что может остановить программное обеспечение, если поток не завершается. Так что, если поток, среди прочих 50, не завершается, он все останавливается.

Я хочу, чтобы каждый поток останавливался через 5 секунд, например. Так что я начну каждый поток с таймаутом 5 секунд. Это правильно?

КОД

import threading
import time

def tt(name, num):
    while True:
        num += 0.5
        print 'thread ' + str(name) + ' at time ' + str(num)
        time.sleep(0.5)


for i in range(3):
    t=threading.Thread(target=tt, args=(i, 0))
    t.setDaemon(True)
    t.start()
    t.join(timeout=1)

print 'end'

РЕЗУЛЬТАТ

Это не работает должным образом .. каждый поток должен остановиться через 1 секунду. Поток 0 останавливается через 3 секунды, поток 1 - через 2 секунды.

thread 0 at time 0.5
thread 0 at time 1.0
thread 1 at time 0.5
thread 0 at time 1.5
thread 0 at time 2.0
thread 1 at time 1.0
thread 2 at time 0.5
thread 0 at time 2.5
thread 1 at time 1.5
thread 2 at time 1.0thread 1 at time 2.0

thread 0 at time 3.0
end

Ответы на вопрос(1)

Ваш ответ на вопрос