登录

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

那我应该怎样做呢?

# Python
迷茫迷茫2146 天前492 次浏览

全部回复(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

    logging

    回复
    0
  • 高洛峰

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

    每个线程把需要输出的内容都放到Queue()中,专门启动一个线程从Queue()中读取数据并输出到屏幕上。

    回复
    0
  • 取消回复发送