python popen 打开太慢

kokiahuang 2010-07-09 11:16:14
一个简单的'ls'命令,通过popen去执行,需要1.5s,通过os.system()执行,只需要0.014s。两者相差为什么这么大?
如果我需要捕获命令执行的标准输出和错误输出以及返回值,比如'ls'等,怎么做比较合适?
...全文
663 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
苍蝇①号 2011-04-08
  • 打赏
  • 举报
回复
是不是库本身的问题不清楚,因为没有去分析过实现代码,但是操作系统对于目录的管理是提供了缓存的,如果第一次执行中你的文件没有在目录缓存中存在那么肯定就慢一些,第二次命中肯定是快一些的。我只想说操作系统的缓存功能也许也会出现两次速度不一致的问题
iambic 2011-04-08
  • 打赏
  • 举报
回复
行为艺术吧。人家都告诉你别用popen了,你还好意思说没答案?
kokiahuang 2011-04-08
  • 打赏
  • 举报
回复
好久了,还是没有答案,如何把这个帖子顶起来。
thy38 2010-07-10
  • 打赏
  • 举报
回复
用subprocess,别太在意速度
I_NBFA 2010-07-09
  • 打赏
  • 举报
回复
慢吗? 我这执行个dir命令很快.
ver. 2.6.5finall for win32
不过python的help里写着:
Deprecated since version 2.6: This function is obsolete. Use the subprocess module. Check especially the Replacing Older Functions with the subprocess Module section.
kokiahuang 2010-07-09
  • 打赏
  • 举报
回复
跟了一下python的代码,
c2pread, c2pwrite = os.pipe()
os.dup2(c2pwrite, 1)
发现在将stdout从定向到c2pwrite时很慢,但是
os.dup2(p2cread, 0)
os.dup2(errin, 2)
都很快,不知道为什么?
amu9900 2010-07-09
  • 打赏
  • 举报
回复
popen会有一个“写文件”的动作,捕获命令输出并返回一个包含输出信息的文件对象。

37,719

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧