【问题标题】:Python Popen downloads only one filePython Popen 只下载一个文件
【发布时间】:2014-09-26 13:09:40
【问题描述】:

我有一个 flickapi.py 文件,可以像 ./flickrapi author photos 一样调用它,它下载了 20 张照片

如果我直接调用或使用

x = popen(['./flickrapi', 'author', 'photos', name])
x.wait()
x.communicate()

一切正常

但如果我只使用

popen(['./flickrapi', 'author', 'photos', name])

只下载一张照片...

我只需要异步调用脚本来下载照片,有什么提示吗?

【问题讨论】:

  • 真正的问题是什么?为什么不能像开头描述的那样调用?
  • 问题是,我需要异步调用进程,所以如果“调用者”将结束孩子将继续......而且我不想等待结束下载...... :)

标签: python asynchronous process popen


【解决方案1】:

我认为这是因为缓冲区大小。 communicate() 会将数据放入内存中,这样程序就不会卡住。当然,所有照片都将被下载。这是waitcommunicate 函数的详细信息。

https://docs.python.org/2/library/subprocess.html

希望对你有帮助。

【讨论】:

  • 所以你的意思是,问题出在输出上?如果所有照片都使用 urllib 下载到具体文件,为什么会卡住?
  • @KOLEGA 我不知道 flickrapi 做了什么。但我猜如果你不调用wait和comminucate,它会下载一个有限的缓冲区大小的文件(我记得限制是64KB)然后停止。
  • 调用单行 popen (['./flickrapi.py', 'asda' 'ASD' 'ASD']) 会导致问题......当我不使用 wait() 并进行通信时() 所以这不是他们的问题...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-09-03
  • 2011-10-07
  • 2019-01-30
  • 2014-11-07
  • 1970-01-01
  • 2014-10-14
  • 1970-01-01
相关资源
最近更新 更多