栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python:初识 multiprocessing - 进程

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python:初识 multiprocessing - 进程

进程(Process)

  • 进程是一个具有独立功能的程序关于某个数据集合的运行活动。在通俗点说:进程就是一段程序执行的过程,程序运行的实例。

进程特征

  • 首先进程具有动态性,动态产生后动态消亡
  • 其次进程具有并发性,可以多个进行一起运行
  • 然后进程具有独立性,多个进行一起运行时可以互不干扰,各干各的工作
  • 最后进程具有异步性,非阻塞模式,也就是两个相同的任务各自运行各自的(这里会有一个同步性,也即是阻-塞模式,就是两个相同的任务运行要等第一个先运行完再运行另一个)

进程状态

  1. 首先是就绪状态 :就是所有前置条件都已经准备完成,等待分配处理器资源。只要分配了就可以干活
  2. 其次是运行状态 :已获得处理器资源,且此状态的进程数目是小于或等于处理器数目
  3. 最后是阻塞状态 :前置条件没满足,无法运行;哪怕分配了处理器也是无法运行的

 

  • pyhon中提供了进程标准库multiprocessing,不需要安装,直接引包使用即可。
  • multiprocessing提供了两种API,一个是Pool类,而另一个是Process类。

Pool 类

  • 进程池,它提供了一种快捷的方法,赋予函数并行化处理一系列输入值的能力,可以将输入数据分配给不同进程处理(数据并行)。

:一个进程池的例子:

from multiprocessing import Pool


def func(x):
    return x * x


if __name__ == '__main__':
    p = Pool(5)
    print(p.map(func, [2, 3, 4, 5, 7, 9, 78]))
    p.close()
  1. 首先引入进程池类
  2. 其次定一个函数,返回的是位置参数相乘的结果
  3. 然后定一个进程池对象,并设置运行5个进程;p.map()(它会将可迭代对象分割为许多块,然后提交给进程池。)调用并执行子进程
  4. 最后关闭进程

运行结果:

[4, 9, 16, 25, 49, 81, 6084]

Process finished with exit code 0


Process 类

  • 可通过创建一个 Process 对象然后调用它的 start() 方法来生成进程。 

:一个简单的进程例子:

from multiprocessing import Process


def func(x):
    return x * x


if __name__ == '__main__':
    p = Process(target=func, args=(2,))
    p.start()
    p.join()
  1. 首先引入进程类
  2. 其次定一个函数,返回的是位置参数相乘的结果
  3. 然后创建一个进程对象,传入要执行的函数和函数参数;p.start()启动进程
  4. 最后p.join(),它主要是控制父进程,等待子进程运行完成后结束

:一个简单的多进程例子:

from multiprocessing import Process


def func(x):
    print(x * x)


def running():
    p = [
        Process(target=func, args=(2,)),
        Process(target=func, args=(4,)),
    ]
    [p.start() for p in p]
    [p.join() for p in p]


if __name__ == '__main__':
    running()

和单进程的区别就是这里把进程放在列表中了,然后循环开启,再循环控制父进程等待子进程运行完成

运行结果:

4
16

Process finished with exit code 0

今天先聊到这里吧,以上总结或许能帮助到你,或许帮助不到你,但还是希望能帮助到你,如有疑问、歧义,直接私信留言会及时修正发布;非常期待你的一键 3 连【 点赞、收藏、分享 】哟,谢谢!

未完成,待续……

一直在努力,希望你也是!

微信搜索公众号:就用python

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/953562.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号