搜尋

首頁  >  問答  >  主體

Python多线程编程的输出格式问题?

今天在学习多线程编程,由于多个线程是同时启动的,所以输出也出现在了同一行,怎样才能换行输出呢?
输出结果是这样的:

*** MULTIPLE THREADS
startingstartingstarting   fibfacsum   at:at:at:   Tue Dec 08 22:30:43 2015Tue Dec 08 22:30:43 2015Tue Dec 08 22:30:43 2015


facsum  finished at:finished at:  Tue Dec 08 22:30:44 2015Tue Dec 08 22:30:44 2015

我想要的结果是这样的:

starting  fib    at: Sat Nov 22 09:51:39 2014

starting  fac    at:Sat Nov 22 09:51:39 2014

starting  sum   at:Sat Nov 22 09:51:39 2014

那我应该怎样做呢?

迷茫迷茫2838 天前722

全部回覆(4)我來回復

  • 大家讲道理

    大家讲道理2017-04-17 16:38:38

    首先感謝各位的回答,然而這一些方式對於我這個Python初學者來言還是不太懂。
    我用了別的方法解決了這個問題。
    我想到線程之間的切換是在一個線程執行幾句另一個線程接著執行幾句這樣交替循環的,而一條語句之內是不會被打斷的。
    原來的錯誤是在於我將輸出語句寫成了這樣的形式:

    print 'starting', funcs[i].__name__, 'at:',\
        ctime()
    

    其實這個在Python看來就不是一條語句,而是幾句語句的和:

    print 'starting',
    print funcs[i].__name__,
    print 'at:',
    print ctime()

    在這樣的情況下,執行緒之間就會互相打斷輸出,所以我改變了輸出語句,用這樣取代:

    print 'starting %s at: %s\n' % (funcs[i].__name__, ctime()),

    在這樣的情況下,輸出就正常了。

    回覆
    0
  • 阿神

    阿神2017-04-17 16:38:38

    給輸出語句加個鎖定。

    回覆
    0
  • 迷茫

    迷茫2017-04-17 16:38:38

    記錄

    回覆
    0
  • 高洛峰

    高洛峰2017-04-17 16:38:38

    每個執行緒把需要輸出的內容都放到Queue()中,專門啟動一個執行緒從Queue()讀取資料並輸出到螢幕上。

    回覆
    0
  • 取消回覆