美文网首页
二十二:Python之多进程

二十二:Python之多进程

作者: 项啊丑 | 来源:发表于2020-04-14 22:40 被阅读0次

程序:是一个指令的集合

进程:正在执行的程序;或者说,当你运行一个程序,你就启动了一个进程

多进程中,每个进程所有数据(包括全局变量)都各自拥有一份,互不影响

Python中使用多进程需要用到multiprocessing模块,这个模块中封装了很多多进程的方法。

Process常用方法

p.start():启动进程,并调用该子进程中的p.run()方法

p.run():进程启动时运行的方法,正式它去调用target指定的函数,我们自定义类的类中一定要实现该方法

p.terminate():强制终止进程,不会进行任何清理操作

p.js_alive():如果p仍然运行,返回True;用来判断进程是否还在运行

p.join([timeout]):主进程等待p终止,timeout是可选的超时时间

进程池

进程池:用来创建多个进程

当需要创建子进程数量不多时,可以直接利用multiprocessing中的Process动态生成多个进程,但如果是上百个上千个目标,手动的去创建进程的工作量巨大,此时就可以利用到multiprocessing模块提供的Pool。

初始化Pool时,可以指定一个最大进程数,当有新的请求提交到Pool中时,如果进程池还没满,那么就会创建一个新的进程来执行请求;但是如果进程池中的进程数达到了最大值,那么该请求就会等待,直到池中有进程结束,才会创建新的进程来执行。

Pool常用函数解析:

apply_async(self, func, args=(), kwds={}, callback=None, error_callback=None):使用非阻塞方式调用func(并行执行,堵塞方式为必须等待上一个进程退出后才执行下一个进程),args为传递给func的参数列表,kwds为传递给func的关键字参数列表

close():关闭Pool,使其不在接收新的任务

terminate():不管任务是否完成,立即终止

join():主进程堵塞,等待子进程的退出,必须在closeterminate之后

进程间通信-Queue

多进程之间,默认是不共享数据的

通过Queue(队列Q)可以实现进程间的数据传递

Q本身是一个消息队列

如何添加消息(入队操作):

可以使用multiprocessing模块的Queue实现多进程之间的数据传递

初始化Queue()对象时(例如:q = Queue() ),若括号中没有指定最大可接收的消息数量,或数量为负值,那么就代表可接收的消息没有上限

Queue.qsize():返回当前队列包含的消息数量

Queue.empty():如果队列为空,返回True

Queue.full():如果队列满了,返回True

Queue.get(block, timeout):获取队列中的一条消息,然后将其从队列中移除,block默认值为True

    -如果block使用默认值,切没有设置timeout(单位秒),消息队列如果为空,此程序将被阻塞(停在读取状态),知道从消息队列读到消息为止,如果设置了timeout,则会等待timeout秒,若还是没有读取到消息,则抛出‘Queue.Empty’异常

    -如果block值为False,消息队列如果为空,则会立刻抛出‘Queue.Empty’异常

进程池间通信-Queue

进程池创建的进程之间通信:如果要使用Pool创建进程,就需要使用multiprocessing.Manager()中的Queue,而不是multiprocessing.Queue()

相关文章

  • 二十二:Python之多进程

    程序:是一个指令的集合 进程:正在执行的程序;或者说,当你运行一个程序,你就启动了一个进程 多进程中,每个进程所有...

  • Python多进程

    目录:一、进程的状态二、进程的创建三、进程间通信四、进程池 Python并发之多进程 一、进程的状态 工作中,任务...

  • python之多进程

    要让python实现多进程「multiprocessing」。我们先来了解操作系统相关知识。Unix 和 Linu...

  • python之多进程

    实例一:一个简单的多进程实例,要创建进程,需要motiproceing模块。用法和创建线程的差不多。这个程序,实现...

  • python之多进程

    1. 简介 进程:通常一个运行着的应用程序就是一个进程,比如:我启动了一个音乐播放器,现在它就是一个进程。线程:线...

  • python之多线程与多进程入门

    python之多线程与多进程 关键词: GIL锁,IO繁忙,线程安全,线程同步,进程池,进程通信,队列 GIL锁;...

  • 33.Python并发编程之多进程

    Python并发编程之多进程 什么是进程?进程是一个抽象的概念,进程的概念起源于操作系统,正在进行的一个过程或者一...

  • python 进程和线程之多进程

    python学习笔记,特做记录,分享给大家,希望对大家有所帮助。 多进程 要让Python程序实现多进程(mult...

  • 047 Python语法之多进程

    进程相关知识 进程不能共享数据 进程会复制一份新的数据,数据具有新的控件存储 进程的概念 进程就是一个程序对各种资...

  • python多任务之多进程

    一个任务是一个进程,进程内的子任务称为线程。多任务的实现有3种方式: 多进程模式; 多线程模式; 多进程+多线程模...

网友评论

      本文标题:二十二:Python之多进程

      本文链接:https://www.haomeiwen.com/subject/uxmomhtx.html