понимание 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