[问题] 想询问有没有方法在指定行印出

楼主: Risha5566 (理沙)   2021-02-24 00:48:05
大家安安
我的问题有点奇怪,请见谅QQ
我的问题大概是这样
因为我有用Threading
每个job都会印出
print(f"({T}) Connecting {id1} ... ", end="\r")
print(f"({T}) Searching {id1} ... ", end="\r")
print(f"({T}) Downloading {id1} ... ", end="\r")
但是因为我有Threading
所以这些会挤在同一行
如果换行的话会变很乱
(7) Searching ANN22860-RA ...
(6) Searching ANN22863-RA ...
(15) Downloading ANN22865-RA ...
(14) Downloading ANN22859-RA ...
(2) Downloading ANN22873-RA ...
(19) Downloading ANN24587-RA ...
(13) Searching ANN22875-RA ...
(17) Downloading ANN22871-RA ...
(3) Downloading ANN22861-RA ...
(16) Downloading ANN22866-RA ...
像这样
而且每个Thread的执行时间不太一样
请问有没有办法可以让
第一个Thread就印在terminal上的第一行
第二个Thread就印在terminal上的第二行
希望是可以印出
terminal上第一行 (1) Connecting {id1} ...
terminal上第二行 (2) Searching {id2} ...
. (3) Connecting {id3} ...
. (4) Downloading {id4} ...
. (5) Finish
如果看不懂我的问题的话
我会再努力解释的!!
先谢谢大家了!!
执行环境:
python 3.6 upup
linux
作者: AndCycle (AndCycle)   2021-02-24 03:33:00
你只能自己先把想印的东西用别的东西接起来排好输出要有一个输出专用的thread, 或是反过来去定时读状态输出
作者: ckc1ark (伪物)   2021-02-24 04:08:00
curses比较像是你要的 一样要有输出专用的daemon thread
作者: remia81   2021-02-24 04:17:00
pbar = tqdm(T_job_input_list ,desc=f"" , bar_format="{desc}", position=T, ncols=80, miniters=1)for j in pbar:id1 = connect(j)pbar.set_description(f"({T}) Connecting {id1}")search(id1, j)pbar.set_description(f"({T}) Searching {id1})
作者: lycantrope (阿宽)   2021-02-25 14:29:00
独立thread用sys.stdout.write输出,用lock让输出排序
作者: leolarrel (真.粽子无双)   2021-02-25 16:46:00
我也推荐用curses处理
楼主: Risha5566 (理沙)   2021-03-03 00:12:00
感谢~~

Links booklink

Contact Us: admin [ a t ] ucptt.com