python多进程库(multiprocessing)

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

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

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

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

foriin range(10):

print(i**i)

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

python 复制代码
 from multiprocessing.dummy import Pool
  def calc_power2(num):
     return num * num
 pool = 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****个数字的平方,谁先计算完手上的这个数,谁就先取下一个数继续计算,直到把所有的数字都计算完成为止。
总结一下这个多线程用法

python 复制代码
from multiprocessing.dummy import Pool
def hanshu(canshu):
    return canshu+2

xiancheng = 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)

打印结果

相关推荐
猫头虎3 分钟前
Rust评测案例:Rust、Java、Python、Go、C++ 实现五大排序算法的执行时间效率比较(基于 OnlineGDB 平台)
java·开发语言·c++·python·golang·rust·排序算法
milanyangbo6 分钟前
从局部性原理到一致性模型:深入剖析缓存设计的核心权衡
开发语言·后端·缓存·架构
恒风52129 分钟前
实时显示鼠标的坐标值,注意事件的(event)
python·信息技术类·对口高考
ftpeak18 分钟前
Rust 嵌入式开发的经验之谈
开发语言·后端·rust
lly20240623 分钟前
Node.js 多进程
开发语言
LeonDL1681 小时前
基于YOLO11深度学习的电梯内车辆识别系统【Python源码+Pyqt5界面+数据集+安装使用教程+训练代码】【附下载链接】
人工智能·python·深度学习·pyqt5·yolo数据集·yolo11深度学习·电梯内车辆识别系统
曹绍华1 小时前
kotlin扩展函数是如何实现的
android·开发语言·kotlin
上去我就QWER1 小时前
Qt中的QShortcut:高效键盘快捷方式开发指南
开发语言·c++·qt
QT 小鲜肉2 小时前
【C++基础与提高】第二章:C++数据类型系统——构建程序的基础砖石
开发语言·c++·笔记
lsx2024063 小时前
HTML5 新元素
开发语言