如何在我的代码上使用多处理/多线程?

时间:2012-03-31 00:38:38

标签: python multithreading multiprocessing

我使用下面的代码来获得类似100,000键和值的字典...我想通过多处理/多线程使其更快,因为每个循环都独立于另一个循环。任何人都可以告诉我如何应用以及哪种(多处理/多线程)更适合这种方法

from urlparse import urlparse

ProcessAllURLs(URLs)

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

由于

2 个答案:

答案 0 :(得分:1)

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

但有一个提示:不要打印池工作人员的URL。最好将答案传回主流程并将其聚合在那里进行打印。从不同进程打印将导致大量混乱,不协调的控制台输出。

答案 1 :(得分:1)

多处理库可能最适合您的示例。看起来您的代码可以重写为:

from urlparse import urlparse

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

map函数与内置map函数相同,但为每个函数调用运行一个单独的过程。

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