Python进程间通信multiprocess代码实例
仔细说来,multiprocess不是一个模块而是python中一个操作、管理进程的包。 之所以叫multi是取自multiple的多功能的意思,在这个包中几乎包含了和进程有关的所有子模块。由于提供的子模块非常多,为了方便大家归类记忆,我将这部分大致分为四个部分:创建进程部分,进程同步部分,进程池部分,进程之间数据共享。重点强调:进程没有任何共享状态,进程修改的数据,改动仅限于该进程内,但是通过一些特殊的方法,可以实现进程之间数据的共享。
有了之前多线程使用以及线程间queue的基础,多进程以及进程间通信就很好理解了,下面是多进程基本语法以及进程间通信简单示例
#多进程基本语法import multiprocessing, time, osdef 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序列化后再反序列化给其它进程#定义一个函数,第一个形参传递一个进程queuedef 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里面读数据
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持好吧啦网。
相关文章: