Python进程间通信multiprocess代码实例
作者:flag_HW
这篇文章主要介绍了Python进程间通信multiprocess代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
仔细说来,multiprocess不是一个模块而是python中一个操作、管理进程的包。 之所以叫multi是取自multiple的多功能的意思,在这个包中几乎包含了和进程有关的所有子模块。由于提供的子模块非常多,为了方便大家归类记忆,我将这部分大致分为四个部分:创建进程部分,进程同步部分,进程池部分,进程之间数据共享。重点强调:进程没有任何共享状态,进程修改的数据,改动仅限于该进程内,但是通过一些特殊的方法,可以实现进程之间数据的共享。
有了之前多线程使用以及线程间queue的基础,多进程以及进程间通信就很好理解了,下面是多进程基本语法以及进程间通信简单示例
#多进程基本语法 import multiprocessing, time, os def process_test(): time.sleep(3) print("my multiprocessing test") print("my pprocess id is",os.getppid()) print("my process id is",os.getpid()) if __name__ == '__main__': #多线程必须写在if __name__后面,为什么??? process = multiprocessing.Process(target=process_test) #启动子进程 process.start() #多进程间数据通信,多进程的queue实际上是python将一个queue序列化后再反序列化给其它进程 #定义一个函数,第一个形参传递一个进程queue def m_queue_test(Queue, name): Queue.put(("multiprocess queue test",name)) #put一次只能传递一个数据对象,多个对象必须使用列表 元组 字典等传递 if __name__ == '__main__': q = multiprocessing.Queue() #主进程实例化一个进程queue process2 = multiprocessing.Process(target=m_queue_test, args=(q, "zsq")) #将q传递给子进程,由子进程往里面传递数据 process2.start() print(q.get())#主进程从queue里面读数据
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。