【发布时间】:2016-01-30 09:02:59
【问题描述】:
我有一个包含打印语句的小型多线程程序。
如果我没有将end 更改为除\n 之外的其他字符,它会完美运行。
如果我想使用其他字符而不是\n,我需要将flush 设置为True。
所以我的问题是冲洗是如何工作的,原因是什么?
#!/usr/bin/env python -u
# -*- coding: utf-8 -*-
from threading import Thread
from queue import Queue
from time import sleep
def do_stuff(task):
while not task.empty():
sleep(1)
print(task.get()) # works well
# print(task.get(), end='\n') # works well
# print(task.get(), end=',', flush=True) # works well
# print(task.get(), end=',') # works badly
task.task_done()
q = Queue(maxsize=0)
for x in range(0, 5):
q.put(x)
num_threads = 2
for i in range(num_threads):
worker = Thread(target=do_stuff, args=(q,))
worker.setDaemon(True)
worker.start()
q.join()
【问题讨论】:
标签: python printing buffer flush