进程(Process)
- 进程是一个具有独立功能的程序关于某个数据集合的运行活动。在通俗点说:进程就是一段程序执行的过程,程序运行的实例。
进程特征
- 首先进程具有动态性,动态产生后动态消亡
- 其次进程具有并发性,可以多个进行一起运行
- 然后进程具有独立性,多个进行一起运行时可以互不干扰,各干各的工作
- 最后进程具有异步性,非阻塞模式,也就是两个相同的任务各自运行各自的(这里会有一个同步性,也即是阻-塞模式,就是两个相同的任务运行要等第一个先运行完再运行另一个)
进程状态
- 首先是就绪状态 :就是所有前置条件都已经准备完成,等待分配处理器资源。只要分配了就可以干活
- 其次是运行状态 :已获得处理器资源,且此状态的进程数目是小于或等于处理器数目
- 最后是阻塞状态 :前置条件没满足,无法运行;哪怕分配了处理器也是无法运行的
- 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()
- 首先引入进程池类
- 其次定一个函数,返回的是位置参数相乘的结果
- 然后定一个进程池对象,并设置运行5个进程;p.map()(它会将可迭代对象分割为许多块,然后提交给进程池。)调用并执行子进程
- 最后关闭进程
运行结果:
[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()
- 首先引入进程类
- 其次定一个函数,返回的是位置参数相乘的结果
- 然后创建一个进程对象,传入要执行的函数和函数参数;p.start()启动进程
- 最后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



