浅谈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 Django模板的使用方法(图文)
Nov 04 Python
Python中atexit模块的基本使用示例
Jul 08 Python
在主机商的共享服务器上部署Django站点的方法
Jul 22 Python
pygame加载中文名mp3文件出现error
Mar 31 Python
解决Python2.7读写文件中的中文乱码问题
Apr 12 Python
python验证码识别教程之灰度处理、二值化、降噪与tesserocr识别
Jun 04 Python
对pandas的行列名更改与数据选择详解
Nov 12 Python
pytorch permute维度转换方法
Dec 14 Python
python使用PIL和matplotlib获取图片像素点并合并解析
Sep 10 Python
python修改FTP服务器上的文件名
Sep 11 Python
python中if和elif的区别介绍
Nov 07 Python
Python加密技术之RSA加密解密的实现
Apr 08 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伪静态页面函数附使用方法
2008/06/20 PHP
php 文件夹删除、php清除缓存程序
2009/08/25 PHP
理解php原理的opcodes(操作码)
2010/10/26 PHP
两级联动select刷新后其值保持不变的实现方法
2014/01/27 PHP
jquery+php实现导出datatables插件数据到excel的方法
2015/07/06 PHP
php图片上传类 附调用方法
2016/05/15 PHP
javascript日期转换 时间戳转日期格式
2011/11/05 Javascript
让AJAX不依赖后端接口实现方案
2012/12/03 Javascript
原生JavaScript实现合并多个数组示例
2014/09/21 Javascript
JS判断是否在微信浏览器打开的简单实例(推荐)
2016/08/24 Javascript
javascript中活灵活现的Array对象详解
2016/11/30 Javascript
表格展示利器 Bootstrap Table实例代码
2017/09/06 Javascript
微信小程序中吸底按钮适配iPhone X方案
2017/11/29 Javascript
vue数据控制视图源码解析
2018/03/28 Javascript
vue动态绑定组件子父组件多表单验证功能的实现代码
2018/05/14 Javascript
在NPM发布自己造的轮子的方法步骤
2019/03/09 Javascript
Vue项目引发的「过滤器」使用教程
2019/03/12 Javascript
前端天气插件tpwidget使用方法详解
2019/06/24 Javascript
js实现圆形显示鼠标单击位置
2020/02/11 Javascript
vue-cli3项目打包后自动化部署到服务器的方法
2020/09/16 Javascript
OpenLayers加载缩放控件使用方法详解
2020/09/25 Javascript
浅谈Python中带_的变量或函数命名
2017/12/04 Python
Python简单生成随机数的方法示例
2018/03/31 Python
python使用多进程的实例详解
2018/09/19 Python
python实现集中式的病毒扫描功能详解
2019/07/09 Python
纯CSS3实现扇形动画菜单(简化版)实例源码
2017/01/17 HTML / CSS
Canvas实现保存图片到本地的示例代码
2018/06/28 HTML / CSS
学生会干部自荐信
2014/02/04 职场文书
党员先锋岗事迹材料
2014/05/08 职场文书
医学求职信
2014/05/28 职场文书
中国梦演讲稿5分钟
2014/08/19 职场文书
2015年科学教研组工作总结
2015/07/22 职场文书
2016学习医德医风心得体会
2016/01/25 职场文书
详解CSS中的特指度和层叠问题
2021/07/15 HTML / CSS
一文搞懂PHP中的抽象类和接口
2022/05/25 PHP
MySQL数据库查询之多表查询总结
2022/08/05 MySQL