首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对子进程使用tqdm

对子进程使用tqdm
EN

Stack Overflow用户
提问于 2019-06-04 11:45:01
回答 1查看 2K关注 0票数 2

我正在尝试为我贡献的一个开源项目添加进度条功能。这个软件把多线程的命令传给它,用一种简单的方式。目前,我正在尝试向应用程序添加进度条功能,但无法让进度条停留在底部并进行更新。

我们使用以下代码来处理命令:

代码语言:javascript
复制
subprocess.call(task, shell=True)

我目前使用tqdm.update()来更新工具栏的进度,但是它总是在新的一行上打印,这使得终端看起来很糟糕。

要确切了解我们是如何使用tqdm包的,请参阅下面的链接:https://github.com/codingo/Interlace/blob/master/Interlace/lib/threader.py

最后,这个应用程序的目标是在终端底部粘贴一个进度条,这样它就不会影响输出,而且看起来相当干净。任何帮助都将不胜感激!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-04 13:08:30

通过更改以下内容修复了此问题:

代码语言:javascript
复制
    @staticmethod
    def run_task(task):
        subprocess.call(task, shell=True)

进入:

代码语言:javascript
复制
    @staticmethod
    def run_task(task, t):
        s = subprocess.Popen(task, shell=True, stdout=subprocess.PIPE)
        t.write(s.stdout.readline().decode("utf-8"))

这基本上允许我们将任务的所有输出通过管道传输到标准输出,然后使用UTF-8解码字节,并使用tqdm.write()将其打印出来。

像护身符一样工作!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56437081

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档