我有一些问题:印刷错误,而线程(Python)的
有一个大约100个线程,他们在做someth,但在这种恶劣的一块蛋糕:
print color("HEY - Some text ... :DDD blabla - "+strftime("%X", gmtime()),fg=85)
我该如何解决它?或者为什么发生?
我有一些问题:印刷错误,而线程(Python)的
有一个大约100个线程,他们在做someth,但在这种恶劣的一块蛋糕:
print color("HEY - Some text ... :DDD blabla - "+strftime("%X", gmtime()),fg=85)
我该如何解决它?或者为什么发生?
不要认为有可能在线程中解决这个问题。你需要一个线程来控制输出,你的线程会发送消息给这个线程,这样线程将处理所有的打印。
您可以使用此队列对象(以下相当变形例从文档)
from threading import Thread
from Queue import Queue
from time import gmtime, strftime
def worker():
while True:
item = q.get()
print item
q.task_done()
q = Queue()
for i in range(1):
t = Thread(target=worker)
t.daemon = True
t.start()
# ---- Somewhere in your threads
q.put(color("HEY - Some text ... :DDD blabla - "+strftime("%X", gmtime()),fg=85))
# -----
q.join()
如果您只对格式感兴趣,那么我会在您的打印语句中添加一个换行符。
print color("HEY - Some text ... :DDD blabla - "+strftime("%X", gmtime())+"\n",fg=85)
我认为这是一个关于线程和原子性的问题。 – Joe
没有帮助:( –
这是相当困难的解决不良蛋糕。 – Aesthete
可能的重复[如何在Python 2.6中获得线程安全打印?](http://stackoverflow.com/questions/3029816/how-do-i-get-a-thread-safe-print-in-python -2-6) – Joe