我使用下面的代码来获得类似100,000键和值的字典...我想通过多处理/多线程使其更快,因为每个循环都独立于另一个循环。任何人都可以告诉我如何应用以及哪种(多处理/多线程)更适合这种方法
from urlparse import urlparse
ProcessAllURLs(URLs)
ProcessAllURLs(URLs)
def ProcessAllURLs(URLs):
for eachurl in URLs:
x=urlparse(eachurl)
print eachurl.netloc
由于
答案 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。