2013-09-30 41 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

沒有幫助:( –