2012-03-31 69 views
1

我正在使用下面的代码来处理像100,000个键和值的字典......我想通过执行多处理/多线程来使它更快,因为每个循环都独立于另一个循环。谁能告诉我如何申请和一个(多/多线程)更容易对这种做法如何在我的代码上使用多处理/多线程?

from urlparse import urlparse 

ProcessAllURLs(URLs) 

ProcessAllURLs(URLs) 
def ProcessAllURLs(URLs): 
    for eachurl in URLs: 
      x=urlparse(eachurl) 
      print eachurl.netloc 

感谢

回答

1

我会建议Python's multiprocessing library。特别是研究the section labeled "Using a pool of workers"。重写上述代码应该非常快,以便它使用系统的所有可用内核。

但有一点建议:不要打印来自泳池工作人员的网址。最好将答案传回主流程,并将其汇总到那里进行打印。从不同的进程打印会导致很多混乱的,不协调的控制台输出。

1

多处理库可能是最适合您的示例。它看起来像你的代码可以改写为:

from urlparse import urlparse 

nprocs = 2 # nprocs is the number of processes to run 
ParsePool = Pool(nprocs) 
ParsedURLS = ParsePool.map(urlparse,URLS) 

地图功能是一样的内置地图功能,但运行的每个函数调用一个单独的进程。

有关多处理的更多信息,请参阅http://docs.python.org/library/multiprocessing.html

相关问题