【问题标题】:python 2.7.5 print one more '\n'python 2.7.5 再打印一个 '\n'
【发布时间】:2015-03-06 13:13:13
【问题描述】:

猫 t.py

import threading
import sys

class RecoverKey(threading.Thread):
    cond = threading.Condition()
    def __init__(self, idx=0):
        threading.Thread.__init__(self)
        self.idx = idx
    def run(self):
        for i in range(5):
            self.cond.acquire()
            print(self.idx * 10)
            sys.stdout.flush()
            self.idx *= 10
            self.cond.release()

if __name__ == '__main__':
    for i in range(1, 3):
        r = RecoverKey(i)
        r.start()

:~/test>python t.py 

10

20
100
200
1000
2000
10000
20000
100000
200000

为什么“10”和“20”之间多了一行?

有时它可能会消失..

【问题讨论】:

  • 我可以代表 hello.co 确认问题是真实的
  • 这很有趣,我将3 更改为更大的值,而且总是多一行。
  • 如果你使用sys.stderr = sys.stdout会发生这种情况

标签: python multithreading


【解决方案1】:

我会查看这些 two questions,它们处理相同的问题。我不确定为什么会这样,但看起来用print >> sys.stderr, x 替换print x 可以工作(试过了)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-11
    • 2016-02-13
    • 2015-10-19
    • 2010-12-10
    • 1970-01-01
    • 2014-03-06
    • 1970-01-01
    • 2012-06-26
    相关资源
    最近更新 更多