2013-09-30 37 views
0

我有一些问题:印刷错误,而线程(Python)的

有一个大约100个线程,他们在做someth,但在这种恶劣的一块蛋糕:

print color("HEY - Some text ... :DDD blabla - "+strftime("%X", gmtime()),fg=85) 

Please, look at this image

我该如何解决它?或者为什么发生?

+1

这是相当困难的解决不良蛋糕。 – Aesthete

+1

可能的重复[如何在Python 2.6中获得线程安全打印?](http://stackoverflow.com/questions/3029816/how-do-i-get-a-thread-safe-print-in-python -2-6) – Joe

回答

0

不要认为有可能在线程中解决这个问题。你需要一个线程来控制输出,你的线程会发送消息给这个线程,这样线程将处理所有的打印。

您可以使用此队列对象(以下相当变形例从文档)

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() 
+0

你应该包括相关的进口 – Joe

+0

增加进口和测试代码(没有颜色和strftime进口) – Antigluk

+0

是的,它的工作,但现在有一个更多的问题:DD ... –

1

如果您只对格式感兴趣,那么我会在您的打印语句中添加一个换行符。

print color("HEY - Some text ... :DDD blabla - "+strftime("%X", gmtime())+"\n",fg=85) 
+0

我认为这是一个关于线程和原子性的问题。 – Joe

+0

没有帮助:( –