浅谈python多进程共享变量Value的使用tips


Posted in Python onJuly 16, 2019

前言:

在使用tornado的多进程时,需要多个进程共享一个状态变量,于是考虑使用multiprocessing.Value(对于该变量的具体细节请查阅相关资料)。在根据网上资料使用Value时,由于共享的是字符串,但网上介绍的都是整数或者字符,于是遇到了很多阻碍,通过查询官方文档得出了解决方案。

一、Value的构造函数:

Value的初始化非常简单,直接类似Value('d', 0.0)即可,具体构造方法为:

multiprocessing.Value(typecode_or_type, *args[, lock])。

该方法返回从共享内存中分配的一个ctypes 对象,其中typecode_or_type定义了返回的类型。它要么是一个ctypes类型,要么是一个代表ctypes类型的code。比如c_bool和'b'是同样的,因为'b'是c_bool的code。

ctypes是Python的一个外部函数库,它提供了和C语言兼任的数据类型,可以调用DLLs或者共享库的函数,能被用作在python中包裹这些库。

*args是传递给ctypes的构造参数

二、Value的使用

对于共享整数或者单个字符,初始化比较简单,参照下图映射关系即可。如i = Value('i', 1), c = Value('c', '0')。

浅谈python多进程共享变量Value的使用tips

注意,如果我们使用的code在上表不存在,则会抛出:

size = ctypes.sizeof(type_)

TypeError: this type has no size

如果共享的是字符串,则在上表是找不到映射关系的,就是没有code可用。所以我们需要使用原始的ctype类型

例如

from ctypes import c_char_p

ss = Value(c_char_p, 'ss')

ctype类型可从下表查阅

浅谈python多进程共享变量Value的使用tips

以上这篇浅谈python多进程共享变量Value的使用tips就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python使用正则表达式提取网页URL的方法
May 26 Python
在Python的Django框架中调用方法和处理无效变量
Jul 15 Python
Python生成器定义与简单用法实例分析
Apr 30 Python
树莓派实现移动拍照
Jun 22 Python
Python pandas.DataFrame 找出有空值的行
Sep 09 Python
Python搭建代理IP池实现接口设置与整体调度
Oct 27 Python
Python中文分词库jieba,pkusegwg性能准确度比较
Feb 11 Python
Python龙贝格法求积分实例
Feb 29 Python
python json.dumps() json.dump()的区别详解
Jul 14 Python
Python selenium键盘鼠标事件实现过程详解
Jul 28 Python
Python利用Pillow(PIL)库实现验证码图片的全过程
Oct 04 Python
详解基于python的全局与局部序列比对的实现(DNA)
Oct 07 Python
python多线程共享变量的使用和效率方法
Jul 16 #Python
Python 进程之间共享数据(全局变量)的方法
Jul 16 #Python
python实现键盘输入的实操方法
Jul 16 #Python
Django的models中on_delete参数详解
Jul 16 #Python
Python3远程监控程序的实现方法
Jul 15 #Python
python监控进程状态,记录重启时间及进程号的实例
Jul 15 #Python
Python 获取windows桌面路径的5种方法小结
Jul 15 #Python
You might like
全国FM电台频率大全 - 15 山东省
2020/03/11 无线电
PHP实现文件上传与下载实例与总结
2016/03/13 PHP
Yii2框架类自动加载机制实例分析
2018/05/02 PHP
PHP实现上传图片到数据库并显示输出的方法
2018/05/31 PHP
jQuery表单验证插件formValidator(改进版)
2012/02/03 Javascript
js实现window.open不被拦截的解决方法汇总
2014/10/30 Javascript
jQuery中prop()方法用法实例
2015/01/05 Javascript
TypeScript 中接口详解
2015/06/19 Javascript
ArtEditor富文本编辑器增加表单提交功能
2016/04/18 Javascript
AngularJs bootstrap详解及示例代码
2016/09/01 Javascript
JavaScript模仿Pinterest实现图片预加载功能
2016/10/25 Javascript
微信小程序 UI布局常用技巧整理总结
2016/12/05 Javascript
js实现可输入可选择的select下拉框
2016/12/21 Javascript
Kindeditor单独调用单图上传增加预览功能的实例
2017/07/31 Javascript
Angular实现模版驱动表单的自定义校验功能(密码确认为例)
2018/05/17 Javascript
Vue封装的组件全局注册并引用
2019/07/24 Javascript
Vue中通过vue-router实现命名视图的问题
2020/04/23 Javascript
Python控制多进程与多线程并发数总结
2016/10/26 Python
django 解决manage.py migrate无效的问题
2018/05/27 Python
浅谈django的render函数的参数问题
2018/10/16 Python
python pcm音频添加头转成Wav格式文件的方法
2019/01/09 Python
python项目对接钉钉SDK的实现
2019/07/15 Python
python实现猜数字游戏
2020/03/25 Python
对Tensorflow中Device实例的生成和管理详解
2020/02/04 Python
PyQt5实现简单的计算器
2020/05/30 Python
时尚的CSS3进度条效果
2012/02/22 HTML / CSS
HTML5的结构和语义(4):语义性的内联元素
2008/10/17 HTML / CSS
Clarks鞋法国官方网站:英国其乐鞋品牌
2018/02/11 全球购物
什么是表空间(tablespace)和系统表空间(System tablespace)
2013/02/25 面试题
经济信息系毕业生自荐信
2014/06/02 职场文书
支行行长竞聘报告
2014/11/06 职场文书
导游词之太原天龙山
2020/01/02 职场文书
redis 查看所有的key方式
2021/05/07 Redis
sql查询结果列拼接成逗号分隔的字符串方法
2021/05/25 SQL Server
基于PyQt5制作一个群发邮件工具
2022/04/08 Python
Python经常使用的一些内置函数
2022/04/11 Python