我知道如何在同一个地方打印一行,但我想从线程打印相同的地方。
现在我得到了:
OK 97035
我想得到:
OK 97035 OK 92035
第一行来自t1线程,第二行来自t2线程。谁知道怎么做?
这是示例代码。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import string, threading
def test():
for i in range(0, 100000):
print "\rOK "+str(i),
jczyd= ['1', '2']
while True:
for i in jczyd:
if i == '1':
#print i
t1 = threading.Thread(target=test, args = ())
t1.daemon = True
t1.start()
elif i == '2':
#print i
t2 = threading.Thread(target=test, args = ())
t2.daemon = True
t2.start()
t1.join()
t2.join()
答案 0 :(得分:1)
实际上,这比你想象的要复杂。
问题在于,普通ASCII中没有可用于同时更新两个单独文本行的字符。 \r
只允许您删除一行。
如果要更新两行,则必须使用特定于平台的方法,如ANSI转义码,或使用curses
以更一般的方式控制终端。
在大多数UNIX系统上,您可以使用以下代码执行此操作:
print '\x1b[%dH%s\x1b[K' % (thread_id, i)
将光标设置为thread_id
行,打印i
,然后删除该行的其余部分。