【发布时间】: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