python多进程感悟

对于大量的测试数据,使用多进程时(例如8个进程),最好使用queue来消费数据,不要将测试数据分为8个list,分别送入不同的进程中,因为这样可以避免极端情况出现。例如,每个测试数据处理起来耗时不一样,你刚好把耗时比较长的数据分了同一个list,就会导致其他的进程也会一直等待该进程的完成。经测试发现,当进程数少时,map要比queue耗时更少,因为进程少时,可选进程比较少,本质上queue分配给进程的测试样本和提前分段的样本差不多,再加上queue比map有很多出站入站的操作,所以要比map更加耗时,而当进程数比较多时,queue的优势更加明显了,测试样本被分配的选择更多了,一旦有空闲进程就进行分配。

同时,对于大量的测试数据,要避免使用进程池,因为可能会出现资源瓶颈。例如,我的测试数据需要对数据库进行请求,如果我使用进程池,那么我的每次请求方法都会向数据库申请请求建立一个tcp连接,并且这些连接是不会复用的,时间一长,数据库的最大连接数就会好紧,就无法向数据库发送检索请求。最好的方法,就是我们创建n个进程,每个进程中都包含一个请求方法,请求方法中,使用连接池的方式向数据库发送请求,当超过连接池的数量限制时,会将之前的连接进行复用,可以把连接池数量得到控制

 

posted @ 2024-05-23 15:10  海_纳百川  阅读(12)  评论(0编辑  收藏  举报
本站总访问量