进程
.1multiprocessing
如果你打算编写多进程的服务程序,Unix/Linux无疑是正确的选择。由于Windows没有fork调用,难道在Windows上无法用Python编写多进程的程序?
由于Python是跨平台的,自然也应该提供一个跨平台的多进程支持。multiprocessing模块就是跨平台版本的多进程模块。
导入multiprocessing模块单进程
导入multiprocessing模块单进程
关于daemon
(二)process,写进程的第二种方式:用类
多进程
(三)进程池 pool
当需要创建的子进程数量不多时,可以直接利用multiprocessing中的Process动态成生多个进程,但如果是上百甚至上千个目标,手动的去创建进程的工作量巨大,此时就可以用到multiprocessing模块提供的Pool方法。
初始化Pool时,可以指定一个最大进程数,当有新的请求提交到Pool中时,如果池还没有满,那么就会创建一个新的进程用来执行该请求;但如果池中的进程数已经达到指定的最大值,那么该请求就会等待,直到池中有进程结束,才会创建新的进程来执行
(三)进程间通信-Queue
根据结果我们可以发现,两个进程各自拥有各自的资源,包括全局变量也是
此时我们引入queue,构成两个函数间的通信
常用代码
注意q相当于一个容量池。当程序的运行到第187行是,此时的q定义为容量池。188行.189行是把这个容量池作为参数传给
函数write和函数read. 所以运行172行,是把值放到这个容量池里面,运行到177行,是把值取出来并打印。
网友评论