浅谈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的另外几种语言实现
Jan 29 Python
在Python中操作字典之clear()方法的使用
May 21 Python
TensorFlow实现AutoEncoder自编码器
Mar 09 Python
详解python配置虚拟环境
Apr 08 Python
Python自动生成代码 使用tkinter图形化操作并生成代码框架
Sep 18 Python
python NumPy ndarray二维数组 按照行列求平均实例
Nov 26 Python
pytorch:实现简单的GAN示例(MNIST数据集)
Jan 10 Python
利用Tensorflow构建和训练自己的CNN来做简单的验证码识别方式
Jan 20 Python
Python使用QQ邮箱发送邮件实例与QQ邮箱设置详解
Feb 18 Python
python数据分析:关键字提取方式
Feb 24 Python
Python使用Matlab命令过程解析
Jun 04 Python
python 读取、写入txt文件的示例
Sep 27 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
Smarty结合Ajax实现无刷新留言本实例
2007/01/02 PHP
PHP下10件你也许并不了解的事情
2008/09/11 PHP
Codeigniter实现智能裁剪图片的方法
2014/06/12 PHP
ci检测是ajax还是页面post提交数据的方法
2014/11/10 PHP
使用一个for循环将N*N的二维数组的所有值置1实现方法
2017/05/29 PHP
thinkPHP多表查询及分页功能实现方法示例
2017/07/03 PHP
PHP实现的AES加密、解密封装类与用法示例
2018/08/02 PHP
PDO::commit讲解
2019/01/27 PHP
基于jquery 的一个progressbar widge
2010/10/29 Javascript
jQuery中document与window以及load与ready 区别详解
2014/12/29 Javascript
jQuery之DOM对象和jQuery对象的转换与区别分析
2015/01/08 Javascript
Knockoutjs 学习系列(二)花式捆绑
2016/06/07 Javascript
jQuery学习之DOM节点的插入方法总结
2017/01/22 Javascript
jquery实现图片平滑滚动详解
2017/03/22 jQuery
ionic+AngularJs实现获取验证码倒计时按钮
2017/04/22 Javascript
微信小程序左右滚动公告栏效果代码实例
2019/09/16 Javascript
基于JavaScript实现单例模式
2019/10/30 Javascript
JS实现的定时器展示简单秒表、页面弹框及跳转操作完整示例
2020/01/26 Javascript
javascript设计模式 ? 解释器模式原理与用法实例分析
2020/04/17 Javascript
使用vue3重构拼图游戏的实现示例
2021/01/25 Vue.js
[01:35]2018年度CS GO最佳战队-完美盛典
2018/12/17 DOTA
Python的lambda匿名函数的简单介绍
2013/04/25 Python
python实现计算资源图标crc值的方法
2014/10/05 Python
为Python的Tornado框架配置使用Jinja2模板引擎的方法
2016/06/30 Python
python爬虫之urllib3的使用示例
2018/07/09 Python
Python从Excel中读取日期一列的方法
2018/11/28 Python
解决python xlrd无法读取excel文件的问题
2018/12/25 Python
python 递归调用返回None的问题及解决方法
2020/03/16 Python
C语言50道问题
2014/10/23 面试题
群众路线教育党员自我剖析材料
2014/10/06 职场文书
2015公务员试用期工作总结
2014/12/12 职场文书
公司经营目标责任书
2015/01/29 职场文书
工作表现证明
2015/06/15 职场文书
电视新闻稿
2015/07/17 职场文书
Python 数据可视化神器Pyecharts绘制图像练习
2022/02/28 Python
vue如何在data中引入图片的正确路径
2022/06/05 Vue.js