我有一个带有for循环的线程,我想从每个循环返回值。但是,当我将return放入循环内部时,它将永久中断循环,因此无法获得其他值。
这是我的功能:
def track_duration_count(track_length):
time.sleep(13.2)
for i in range(0,track_length):
timer = str(datetime.timedelta(seconds=i))
#sys.stdout.write(str(i)+' ')
#sys.stdout.flush()
return timer
print (timer)
time.sleep(1)
global stop_thread
if stop_thread:
break
print ("BREAKFREE")
然后我用以下命令调用函数:
_thread.start_new_thread(track_duration_count,(track_length,))
我想将此功能中的timer
用于另一个线程。
答案 0 :(得分:1)
我建议使用队列在线程之间共享数据。将队列传递给函数(它将传递引用而不是队列的副本,这就是Python的工作原理),然后而不是返回,请使用queue.put()方法将计时器放置在队列中。然后,其他线程可以使用queue.get()方法检索该值。
https://docs.python.org/3/library/queue.html
还有没有理由不使用标准threading.Thread类吗?除非您出于某些愚蠢的理由要使用私有方法,否则使用此方法会更安全。