ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

基于multiprocessing.pool的多进程池与单进程访问多网页的比较示例

2026/8/16 0:31:21 拓冰建站 浏览量
基于multiprocessing.pool的多进程池与单进程访问多网页的比较示例

一、示例代码:

from multiprocessing import Pool
import time
import requestsurls = [                                              # URL队列,通过多进程访问'http://www.python.org','http://www.python.org/about/','http://www.python.org/doc/','http://www.python.org/download/','http://www.python.org/getit/','http://www.python.org/community/','https://wiki.python.org/moin/','http://planet.python.org/','https://wiki.python.org/moin/LocalUserGroups','http://www.python.org/psf/','http://docs.python.org/devguide/','http://www.python.org/community/awards/'
]def open_url(url):res = requests.get(url)if res.status_code == 200:return res.textelse:return ''if __name__ == '__main__':urls = urls * 1start = time.time()                                     # 单进程
pool1 = Pool(processes=1)
results = []
for url in urls:results.append(pool1.apply_async(open_url, (url,)))
pool1.close()
pool1.join()
print('单进程执行时间:', time.time() - start)start = time.time()                                     # 多进程
pool2 = Pool(processes=4)
results = []
for url in urls:results.append(pool2.apply_async(open_url, (url,)))
pool2.close()
pool2.join()
print('多进程执行时间:', time.time()-start)

二、主要函数解读:

apply_async()函数的功能是向进程池提交多个url请求。它支持非阻塞、返回结果后进行回调的方式。

三、运行结果:

四、结论:

与前一篇的多线程池与单线程访问多网页所用的时间差别只有3倍的比较,此篇的多进程池与单进程访问多网页使用的时间差别,有17倍之多。