gpt4 book ai didi

python线程仅在加入后打印到stdout

转载 作者:行者123 更新时间:2023-11-28 22:48:41 27 4
gpt4 key购买 nike

我有一个 python 程序,我想在其中添加一个进度条。我的线程类是:

class ProgressThread(threading.Thread):
def __init__(self):
super(ProgressThread, self).__init__()
self.stoprequest = threading.Event()

def run(self):
while not self.stoprequest.is_set():
print ".",
time.sleep(5)

def join(self, timeout=None):
self.stoprequest.set()
super(ProgressThread, self).join(timeout)

然后在我的主线程中,我像这样使用上面的线程类:

progress_thread = ProgressThread()
progress_thread.start()
ret = long_running_method()
progress_thread.join()

我遇到的问题是在我调用 join() 之前不会打印这些点。正确的点数对应于 long_running_method 完成所需的时间,但我希望它们一个一个地显示出来,只是为了向用户表明程序没有挂起。

最佳答案

我认为问题在于,当您使用 print ".", 时,您没有打印出换行符(逗号阻止了这种情况)。默认情况下,stdout 在看到换行符 \n 之前不会刷新到屏幕上。您可以通过在 print 语句之后添加 sys.stdout.flush() 来解决这个问题。这将强制将输出打印到屏幕上。

关于python线程仅在加入后打印到stdout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24809425/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com