欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 八卦 > python多进程库(multiprocessing)

python多进程库(multiprocessing)

2024/11/30 8:48:08 来源:https://blog.csdn.net/wwwcaifeng/article/details/140588023  浏览:    关键词:python多进程库(multiprocessing)

     multiprocessing本身是Python的多进程库,用来处理与多进程相关的操作。但是由于进程与进程之间不能直接共享内存和堆栈资源,而且启动新的进程开销也比线程大得多,因此使用多线程来爬取比使用多进程有更多的优势。multiprocessing下面有一个dummy模块,它可以让Python的线程使用multiprocessing的各种方法。

     dummy下面有一个Pool类,它用来实现线程池。这个线程池有一个map()方法,可以让线程池里面的所有线程都“同时”执行一个函数。

例如计算09的每个数的平方。

       在学习了for循环之后,代码可能会写成这样:

for i in range(10):

    print(i ** i)

 这种写法当然可以得到结果,但是代码是一个数一个数地计算,效率并不高。而如果使用多线程的技术,让代码同时计算很多个数的平方,就需要使用multiprocessing.dummy来实现:

 from multiprocessing.dummy import Pooldef calc_power2(num):return num * numpool = Pool(3)origin_num = [x for x in range(10)]result = pool.map(calc_power2, origin_num)print(f'计算0-9的平方分别为:{result}')

上面的代码中,先定义了一个函数用来计算平方,然后初始化了一个有3个线程的线程池。这3个线程负责计算10个数字的平方,谁先计算完手上的这个数,谁就先取下一个数继续计算,直到把所有的数字都计算完成为止。

总结一下这个多线程用法
from multiprocessing.dummy import Pool
def hanshu(canshu):return canshu+2xiancheng = Pool(3)
canshujihe = [1,2,3,4,5]shuchujieguo = xiancheng.map(hanshu,canshujihe)print(shuchujieguo)
from multiprocessing.dummy import Pool
这一行表示导入库模块def hanshu(canshu):return canshu+2
上面两行是一个函数,函数有参数,有返回值
xiancheng = Pool(3)
设置几个线程,这里设置了3个线程
canshujihe = [1,2,3,4,5]
这里弄了一个参数的集合
shuchujieguo = xiancheng.map(hanshu,canshujihe)
输出的结果=线程设置.map(函数名不含括号,参数集合)
print(shuchujieguo)

打印结果

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com