2009-12-30 22 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