多进程中各个进程间相互隔离,进程间通信需要使用到通道。

多进程中使用Queue实现进程中通信


from multiprocessing import Process,Queue
import time ,random def f(q, ):
for i in range(10):
n = q.get()
n+=1
q.put( n)
print("计数",n)
print('subpro',id(q))
time.sleep(random.random()) if __name__=='__main__':
q = Queue()
q.put(0)
print('mainpro',id(q))
lst = []
for i in range(3):
p = Process(target=f, args=(q,)) # 必须把q传进去,因为不同进程间内存是不共享的
lst.append(p)
p.start()
for i in lst:
i.join()
print("总数",q.get())

使用进程池时,使用它Queue会出错,需要使用Manager

from multiprocessing import Pool,Manager
import time ,random def f(q, ):
for i in range(10):
n = q.get()
n+=1
q.put( n)
print("计数",n)
print('subpro',id(q))
time.sleep(random.random()) if __name__=='__main__':
q = Manager().Queue()
q.put(0)
print('mainpro',id(q))
pool = Pool(8)
for x in range(50):
# 添加进程入进程池,注意加"_async",apply为阻塞版本,参数分别为target和args
result = pool.apply_async(f, (q,))
pool.close()
pool.join()
print("总数",q.get())

python进程池 使用Queue实现计数功能的更多相关文章

  1. python 进程池Pool以及Queue的用法

    import os,time,random from multiprocessing import Pool def task(name): print('正在运行的任务:%s,PID:(%s)'%( ...

  2. python(进程池/线程池)

    进程池 import multiprocessing import time def do_calculation(data): print(multiprocessing.current_proce ...

  3. python进程池剖析(三)

    之前文章对python中进程池的原理.数据流以及应用从代码角度做了简单的剖析,现在让我们回头看看标准库中对进程池的实现都有哪些值得我们学习的地方.我们知道,进程池内部由多个线程互相协作,向客户端提供可 ...

  4. python进程池剖析(一)

    python中两个常用来处理进程的模块分别是subprocess和multiprocessing,其中subprocess通常用于执行外部程序,比如一些第三方应用程序,而不是Python程序.如果需要 ...

  5. python进程池

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

  6. python进程池与线程池

    为什么会进行池化? 一切都是为了效率,每次开启进程都会分配一个属于这个进程独立的内存空间,开启进程过多会占用大量内存,系统调度也会很慢,我们不能无限的开启进程. 进程池原来大概如下图 假设有100个任 ...

  7. python 进程(池)、线程(池)

    进程.多进程.进程池 进程总概述 进程 from multiprocessing import Process import os # 子进程要执行的代码 def run_proc(name): pr ...

  8. python进程池:multiprocessing.pool

    本文转至http://www.cnblogs.com/kaituorensheng/p/4465768.html,在其基础上进行了一些小小改动. 在利用Python进行系统管理的时候,特别是同时操作多 ...

  9. python进程池剖析(二)

    之前文章中介绍了python中multiprocessing模块中自带的进程池Pool,并对进程池中的数据结构和各个线程之间的合作关系进行了简单分析,这节来看下客户端如何对向进程池分配任务,并获取结果 ...

随机推荐

  1. paramiko获取主机信息

    import re import paramiko host="192.168.4.88" user = "root" password = " cl ...

  2. linux笔试题

    1. cron 后台常驻程序 (daemon) 用于: A. 负责文件在网络中的共享 B. 管理打印子系统 C. 跟踪管理系统信息和错误 D. 管理系统日常任务的调度 2. 在大多数Linux发行版本 ...

  3. Web应用运行原理

    web应用启动做了什么? 读取web.xml文件   - web.xml常用配置参数: 1).context-param(上下文参数)2).listener(监听器配置参数)3).filter(过滤器 ...

  4. tree/pstree

    tree yum install tree 不指定路径的话直接显示当前目录的结构 加上-L 表示只显示到指定的目录层级 tree -L 2 ./

  5. Codevs 1038 一元三次方程求解 NOIP 2001(导数 牛顿迭代)

    1038 一元三次方程求解 2001年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 白银 Silver 题目描述 Description 有形如:ax3+b ...

  6. C/C++语言之由数字26引起的文件的数据保存与读取调试。

    首先在VS2010中遇到的问题是,建立了一个结构体 struct position{ int x; int y; }: 然后用此结构体声明一个数组rout[8]; for(int i=0;i<8 ...

  7. C语言学习笔记8-函数

    C语言学习笔记8-函数  ...待编辑 1.汇编看函数调用过程 2.函数调用过程图示:学好C这个是关键,要懂得原理 标准调用(_cdecl) 参数由右往左入栈,调用者平衡栈(即入多少参数后参数调用玩后 ...

  8. MySQL数据分析(7)-SQL的两大学习框架

    大家好,我是jacky,很高兴继续跟大家分享<MySQL数据分析实战>课程,前面的课程基本上我把MySQL的原理都做了一定的介绍,有好多朋友说学习MySQL是没有逻辑的,其实jacky是非 ...

  9. 安装fastFDS

    fastdfs源码包.libfastcommon源码包.nginx模块,我存放源码包于 /usr/local/src wget https://github.com/happyfish100/fast ...

  10. Raspberry Pi 摄像头模块入门

    目录 一.摄像头模块安装 二.使用命令控制摄像头 三.使用Python程序控制摄像头 四.基于vlc的Raspberry Pi摄像头实时监控 参考资料 Raspberry Pi提供了摄像头模块的接口, ...