投稿  收藏 
使用多进程获取商誉占比

【问题描述】

请用多进程的方式同时爬取多个公司的商誉信息,提高程序执行速度。

使用多进程获取商誉占比输出结果:

运行1次get_all_mp函数花费时间:2.501972198486328秒

使用多进程获取商誉占比

【题前思考】

根据问题描述,填写表8-2-1。

表8-2-1 问题分析

使用多进程获取商誉占比

【解题思路】

从代码的角度来看,多线程程序和多进程程序的代码是类似的,区别在于多进程方式是使用multiprocessing模块中的Pool类来创建进程池对象,然后调用该对象的map( )方法来并行执行函数。Pool类的map( )方法的参数及返回值的意义与concurrent.futures.ThreadPoolExecutor类的map( )方法相似。

【参考代码】

使用多进程获取商誉占比

【代码分析】

①:从multiprocessing模块导入Pool类和cpu_count( )函数。

②:定义函数get_all_mp( )以多进程方式获取公司商誉数据。

③:创建进程池对象p,进程数量为CPU数量。cpu_count( )函数用于取得逻辑CPU数量,如双核四线程CPU将会认为有4个CPU。

④:调用map( )方法以多进程方式并行执行函数get_proportion_of_goodwill( ),各函数参数在列表stocklist中,各函数调用返回值以列表形式返回到变量res。

【技术全貌】

进程池Pool可以自动控制进程。Pool类可以提供指定数量的进程供用户调用,当有新的请求提交到Pool中时,如果进程池还没有满,就会创建一个新的进程来执行请求;如果池满,请求就会告知先等待,直到池中有进程结束。使用Pool来创建和管理进程的方法见表8-2-2。

表8-2-2 使用Pool创建和管理进程的方法

使用多进程获取商誉占比

关 键 词

商誉占比

相关教程

提示声明

  • 免责声明:本站资源均来自网络或者用户投稿,仅供用于学习和交流:如有侵权联系删除!

猜你喜欢