我有一些問題:印刷錯誤,而線程(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