通过python进行多部分/线程下载?

时间:2009-12-30 10:21:04

标签: python multithreading download urllib multipart

我在网上看到了一些线程downloaders,甚至还有一些multi-part downloaders(HTTP)。

我没有将它们视为一个类/函数。

如果你们中间有任何类/功能,我可以直接进入我需要抓取多个文件的任何应用程序,我会非常感激。

如果有一个图书馆/框架(或程序的后端)这样做,请指导我吗?

1 个答案:

答案 0 :(得分:1)

Christopher Arndt的

Threadpool可能正是您所寻找的。我已经使用this“易于使用的面向对象的线程池框架”用于您描述的确切目的,并且它工作得很好。请参阅链接页面底部的usage examples。它确实很容易使用:只需定义三个函数(其中一个是可选的异常处理程序代替默认处理程序),您就可以了。

来自http://www.chrisarndt.de/projects/threadpool/

  • 面向对象,可重复使用的设计
  • 提供回调机制,以便在从工作线程返回结果时处理结果。
  • WorkRequest对象包装分配给工作线程的任务,并允许轻松地将任意数据传递给回调。
  • 使用Queue类可以解决大多数锁定问题。
  • 所有工作线程都是守护进程,所以当主程序退出时它们会退出,无需加入。
  • 线程一旦创建就开始运行。无需启动或停止它们。您可以随时增加或减少池大小,多余的线程将在完成当前任务时退出。
  • 在将最后一个任务分配给线程后,您不需要保留对线程的引用。你只要告诉它:“当你完成时,不要回来寻找工作!”
  • 线程在等待分配任务时不会占用周期,它们只是在任务队列为空时阻塞(尽管它们每隔几秒就会唤醒以检查它们是否被解除)。

也可在http://pypi.python.org/pypi/threadpool,easy_install或subversion结帐时使用(请参阅项目主页)。