2009-12-30 21 views

回答

1

Threadpool克里斯托弗阿恩特可能是你在找什么。我已经使用this“易于使用的面向对象的线程池框架”来达到您描述的确切目的,并且效果很好。请参阅链接页面底部的usage examples。它确实很容易使用:只需定义三个函数(其中一个函数是一个可选的异常处理程序代替默认处理程序),然后您就可以开始使用了。

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

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

也可在http://pypi.python.org/pypi/threadpool,easy_install或作为颠覆检查(参见项目主页)。

+0

使用此加上urllib - 但我后来扭动。 – torger 2010-04-04 03:50:40