首页 > 解决方案 > IPython 的高性能替代品!shell-command 魔法

问题描述

在 Google Colab 上,使用:

! shell-command

非常slooooooooooooooooooooooow。

这是一个测试:

import os
%timeit os.system('date > /dev/null')
%timeit ! date > /dev/null

给出输出:

100 loops, best of 3: 8.58 ms per loop
1 loop, best of 3: 1.56 s per loop

这使得使用比使用简单命令! command慢 180 倍。system()

如何避免使用! command,同时仍将 stdout / stderr 实时写入输出单元?

特别是,我希望能够wget在单个屏幕行上显示动态进度条之类的内容,但我会接受一种解决方案,该解决方案将为每个进度条更新写出一个新行。

标签: pythonjupyter-notebookipythongoogle-colaboratory

解决方案


你可以试试subprocess.check_output。它的工作原理类似于!,但您需要先将命令拆分为数组。


推荐阅读