繁体   English   中英

从线程的每个循环获取返回值

[英]Get return value from each loop of thread

我有一个带有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用于另一个线程。

我建议使用队列在线程之间共享数据。 将队列传递给函数(它将传递引用而不是队列的副本,这就是Python的工作原理),然后而不是返回,请使用queue.put()方法将计时器放置在队列中。 然后,其他线程可以使用queue.get()方法检索该值。

https://docs.python.org/3/library/queue.html

还有使用不使用标准threading.Thread类的原因吗? 除非您有一些非常愚蠢的理由使用私有方法,否则使用此方法会更安全。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM