【摸鱼笔记】multiprocessing,多进程并行更高效

背景

软件开发过程中,有时会需要程序同时处理多个任务,又或者需要程序处理的某一个任务各个部分不相互排队;

这时,我们会使用多线程、多进程等方式,让程序进行并行计算;

python 提供了 multiprocessing 库用于支持多进程编程;同时这也是 Python 官方推荐的多线程替代方案;

简介

multiprocessing 是 Python 的一个标准库,它提供了创建和管理进程的功能,使得开发者能够利用多核处理器进行并行计算。

使用 multiprocessing 可以使得 Python 程序在多核或多处理器机器上更加高效地运行。

进程创建:使用 Process 类来创建进程。

进程池Pool:提供了一个简单的接口来处理多个进程的并行执行,特别是用于迭代任务,如 map 和 apply_async。

进程间通信:支持进程间的通信,如管道(Pipe)、队列(Queue)和共享内存。

共享状态:虽然进程通常不共享状态,但 multiprocessing 提供了一些方式来共享状态,如 Value 和 Array。

同步:提供锁(Lock)和信号量(Semaphore)等同步机制,用于控制对共享资源的访问。

进程创建

multiprocessing.Process 类用于创建新的进程对象;

可以通过将函数作为参数传递给 Process 对象来创建新的进程;

import multiprocessing as mp


def func_execute():
    print(" execute ")


if __name__ == "__main__":
    process = mp.Process(target=func_execute)
    process.start()
    process.join()

start() 方法用于启动子进程; join() 方法用于等待进程执行完毕;

通过在主程序中调用 join(),可以让主程序等待子进程的结束,确保主程序在子进程完成后回收其资源。

进程池Pool

multiprocessing.Pool 类用于创建进程池,从而简化子进程的管理和任务分发。

可以通过 map()apply() 等方法将任务分发给进程池中的子进程执行。

import multiprocessing as mp


def func_execute(num):
    data_list = [1, 2, 3, 4, 5, 6, 7, 8, 9]
    for i in data_list:
        if i % num == 0:
            print(num, "进程打印对应值", i)


if __name__ == '__main__':
    pool = mp.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

The_Singing_Towers

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值