浅谈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 相关文章推荐
教你用Type Hint提高Python程序开发效率
Aug 08 Python
Python实现GUI学生信息管理系统
Apr 05 Python
python实现矩阵打印
Mar 02 Python
对pyqt5中QTabWidget的相关操作详解
Jun 21 Python
Python绘制堆叠柱状图的实例
Jul 09 Python
python3.6+django2.0+mysql搭建网站过程详解
Jul 24 Python
Python input函数使用实例解析
Nov 22 Python
Python监控服务器实用工具psutil使用解析
Dec 19 Python
tensorboard 可以显示graph,却不能显示scalar的解决方式
Feb 15 Python
python递归函数求n的阶乘,优缺点及递归次数设置方式
Apr 02 Python
Keras设定GPU使用内存大小方式(Tensorflow backend)
May 22 Python
python实现大文本文件分割成多个小文件
Apr 20 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
PHP中英混合字符串截取函数代码
2011/07/17 PHP
php导入导出excel实例
2013/10/25 PHP
PHP 5.5 创建和验证哈希最简单的方法详解
2013/11/07 PHP
php过滤XSS攻击的函数
2013/11/12 PHP
PHP中替换键名的简易方法示例详解
2014/01/07 PHP
PHP实现发送微博消息功能完整示例
2019/12/04 PHP
JQuery EasyUI 对话框的使用方法
2010/10/24 Javascript
深入理解JavaScript系列(4) 立即调用的函数表达式
2012/01/15 Javascript
JavaScript中实现最高效的数组乱序方法
2014/10/11 Javascript
理解javascript中的Function.prototype.bind的方法
2017/02/03 Javascript
基于layer.js实现收货地址弹框选择然后返回相应的地址信息
2017/05/26 Javascript
JS自定义滚动条效果简单实现代码
2020/10/27 Javascript
浅谈通过JS拦截 pushState和replaceState事件
2017/07/21 Javascript
详解express + mock让前后台并行开发
2018/06/06 Javascript
Vue cli3 库模式搭建组件库并发布到 npm的流程
2018/10/12 Javascript
vue选项卡切换登录方式小案例
2019/09/27 Javascript
详解vue3.0 diff算法的使用(超详细)
2020/07/01 Javascript
vue调用微信JSDK 扫一扫,相册等需要注意的事项
2021/01/03 Vue.js
Python实现的简单发送邮件脚本分享
2014/11/07 Python
python读取二进制mnist实例详解
2017/05/31 Python
python 3.7.0 下pillow安装方法
2018/08/27 Python
基于Python中isfile函数和isdir函数使用详解
2019/11/29 Python
Python变量、数据类型、数据类型转换相关函数用法实例详解
2020/01/09 Python
pytorch 状态字典:state_dict使用详解
2020/01/17 Python
解决ROC曲线画出来只有一个点的问题
2020/02/28 Python
非常震撼的纯CSS3人物行走动画
2016/02/24 HTML / CSS
FORZIERI澳大利亚站:全球顶级奢华配饰精品店
2016/12/31 全球购物
Falconeri美国官网:由羊绒和羊毛制成的针织服装
2018/04/08 全球购物
飞利浦西班牙官方网站:Philips西班牙
2020/02/17 全球购物
高中生物教学反思
2014/02/05 职场文书
水利水电专业自荐信
2014/07/08 职场文书
学校联谊协议书
2014/09/16 职场文书
乡镇法制宣传日活动总结
2015/05/05 职场文书
2015年财务个人工作总结范文
2015/05/22 职场文书
暑假生活随笔
2015/08/15 职场文书
《比尾巴》教学反思
2016/02/24 职场文书