python 进程间通信(上)
一 使用queue来实现进程间的内存共享
#_*_coding:utf-8_*_
from multiprocessing import Process,Queue
import os,time
def f(q,n):
q.put([n,'hello'])
if __name__ == '__main__':
#此queue不是直接导入的import Queue,这个是multiprocessing重新封装的
q=Queue()
#循环6个进程
for i in range():
p=Process(target=f,args=(q,i))
p.start()
#等待子进程完毕后在继续执行
p.join()
for i in range(q.qsize()):
print q.get()
显示效果如下:
[0, 'hello', {'aa': 'bb'}]
[1, 'hello', {'aa': 'bb'}]
[2, 'hello', {'aa': 'bb'}]
[3, 'hello', {'aa': 'bb'}]
[4, 'hello', {'aa': 'bb'}]
在队列中可以存储列表,字典等类型,还是很方便的。但是python间进程间共享内存 并不是真正意义的而是需要利用第三方来实现queue就是
二进程锁LOCK
#_*_coding:utf-8_*_
from multiprocessing import Process,Lock
import os,time
def f(l,i):
#加锁
l.acquire()
print 'hello',i
#释放锁
l.release()
if __name__ == '__main__':
lock=Lock()
for i in range(5):
p=Process(target=f,args=(lock,i)).start()
显示效果:
hello 0
hello 1
hello 2
hello 3
hello 4
这个lock是完全复刻的线程锁 ,没有什么改动。进程间本身内存就是独立的,没有什么征用资源的问题,所以这个把锁用处不大,但是有的时候可能需要,比如当终端显示的时候,多个进程都用的同一个终端显示。
看看父进程和子进程关系

python 进程间通信(上)的更多相关文章
- Python进程间通信:Queue
Python进程间通信Queue 1.Queue使用方法: Queue.qsize():返回当前队列包含的消息数量: Queue.empty():如果队列为空,返回True,反之False : Que ...
- Python进程间通信和网络基础
Python进程间通信和网络基础 Python支持多种进程间通讯的方式, 有单机通信的signal和mmap等, 也有可以通过网络的socket方式, 这里先介绍select等的有关知识, socke ...
- python进程间通信--信号Signal
信号signal 是python进程间通信多种机制中的其中一种机制.可以对操作系统进程的控制,当进程中发生某种原因而中断时,可以异步处理这个异常. 信号通过注册的方式‘挂’在一个进程中,并且不会阻塞该 ...
- python进程间通信 queue pipe
python进程间通信 1 python提供了多种进程通信的方式,主要Queue和Pipe这两种方式,Queue用于多个进程间实现通信,Pipe是两个进程的通信 1.1 Queue有两个方法: Put ...
- Python入门(上)
Python入门(上) Python入门(上) 简介 Python 基础语法 行与缩进 注释 运算符 标准数据类型 变量 编程流程 顺序(略) 分支 if 循环 for while break 和 c ...
- Python进程间通信之共享内存
前一篇博客说了怎样通过命名管道实现进程间通信,但是要在windows是使用命名管道,需要使用python调研windows api,太麻烦,于是想到是不是可以通过共享内存的方式来实现.查了一下,Pyt ...
- 关于解决python线上问题的几种有效技术
工作后好久没上博客园了,虽然不是很忙,但也没学生时代闲了.今天上博客园,发现好多的文章都是年终总结,想想是不是自己也应该总结下,不过现在还没想好,等想好了再写吧.今天写写自己在工作后用到的技术干货,争 ...
- python FTP上传和下载文件
1. 连接FTP server import ftplib ftp = ftplib.FTP(ftpserver, user, passwd) 等同于 import ftplib ftp = ftpl ...
- Python判断上传文件类型
在开发上传服务时,经常需要对上传的文件进行过滤. 本文为大家提供了python通过文件头判断文件类型的方法,非常实用. 代码如下 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ...
随机推荐
- Mariadb修改root密码
默认情况下,新安装的 mariadb 的密码为空,在shell终端直接输入 mysql 就能登陆数据库. 如果是刚安装第一次使用,请使用 mysql_secure_installation 命令初始化 ...
- Aerospike-内存和硬盘混合存储的kv数据库
为什么会有Aerospike? Redis是一个纯内存型数据库,性能上没有多大问题. 但这又带来一个新问题,内存是很贵的,所以全内存的存储成本非常昂贵.为了节省成本,我们需要把一部分不经常用到的数据存 ...
- OS + macOS Mojave 10.14.4 / sushi / ssh-keygen / ssh-copy-id
s 系统版本: macOS 10.14.4 (18E226) 内核版本: Darwin 18.5.0 型号名称: Mac mini 2014 型号标识符: Macmini7,1 处理器名称: Inte ...
- Python list和 np.Array 的转换关系
一.List转String 1.str list转 string a_list = ["h","e","l","l",& ...
- CopyOnWriteArrayList真的完全线程安全吗
我之前书上看到的说法是:Vector是相对线程安全,CopyOnWriteArrayList是绝对线程安全 这种说法其实有些问题,CopyOnWriteArrayList在某些场景下还是会报错的 Co ...
- 解决Ubuntu 17.10设置面板打不开的问题
问题描述 对于Ubuntu桌面系统我用得不多,最近安装了Ubuntu17.10使用,一直都没遇到什么大的问题,界面风格已经与Windows很相似,总体体验还不错.直到某一天我突然手痒痒把Dock面板从 ...
- [再寄小读者之数学篇](2014-06-21 Beal-Kaot-Majda type logarithmic Sobolev inequality)
For $f\in H^s(\bbR^3)$ with $s>\cfrac{3}{2}$, we have $$\bex \sen{f}_{L^\infty}\leq C\sex{1+\sen{ ...
- jQuery1.9及以上版本检测IE版本号
jQuery 从 1.9 版开始,移除了 $.browser 和 $.browser.version , 取而代之的是 $.support . 在更新的 2.0 版本中,将不再支持 IE 6/7/8. ...
- 边框回归(bounding-Box regression)
转自:https://blog.csdn.net/zijin0802034/article/details/77685438 为什么要边框回归? 什么是边框回归? 边框回归怎么做的? 边框回归为什么宽 ...
- 如果在ie上报错又找不到问题原因该怎么办?
我司项目需要兼容IE浏览器 QQ浏览器 360浏览器,调了几天发现QQ跟360都没问题了然后只剩下一个问题就是IE上报错了!!! 然后去百度找了各种原因 最后发现在IE浏览器这种引入方式无法解析会报 ...