【发布时间】:2017-02-13 04:42:04
【问题描述】:
我是线程和多处理的新手。我有一些代码在其中启动一个进程,我希望输出显示类似这样的活动等待状态
wating....
代码与下面类似:
导入线程 进口时间
class ThreadExample(object):
def __init__(self):
self.pause = True
threading.Thread(target=self.second_thread).start()
# Some other processes
print("Waiting", end="")
while self.pause:
time.sleep(1)
print(".", end="")
print("Hooray!")
def second_thread(self):
print("timer started")
time.sleep(3)
self.pause = False
print("timer finished")
if __name__ == "__main__":
ThreadExample()
当我运行上面的代码时,我会收到输出:
timer started
Do something else..timer finished
.
Hooray!
没什么大惊小怪的,只是开头只出现了“计时器开始”,而其余的文字在结尾瞬间出现。
如果我将 print(".", end="") 行更改为 print("."),我会收到以下输出:
timer started
Do something else.
.
timer finished
.
Hooray
这些点以 1 秒为增量出现,这是我的意图。
有没有办法在没有 end="" 的情况下在一行中获得“等待...”?
其次,我猜这与 print() 函数的内部有关,如果不是,我应该以其他方式执行线程吗?我认为问题不在于 GIL,因为我尝试了 multiprocess.Process 并得到了相同的结果。
【问题讨论】:
标签: python multithreading python-3.x buffering