浅谈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开发vim插件及心得分享
Nov 04 Python
python django 访问静态文件出现404或500错误
Jan 20 Python
Python中定时任务框架APScheduler的快速入门指南
Jul 06 Python
python list删除元素时要注意的坑点分享
Apr 18 Python
解决pyinstaller打包pyqt5的问题
Jan 08 Python
详解python多线程之间的同步(一)
Apr 03 Python
python中报错"json.decoder.JSONDecodeError: Expecting value:"的解决
Apr 29 Python
Windows 安装 Anaconda3+PyCharm的方法步骤
Jun 13 Python
python设计tcp数据包协议类的例子
Jul 23 Python
Tensorflow:转置函数 transpose的使用详解
Feb 11 Python
10张动图学会python循环与递归问题
Feb 06 Python
Django实现翻页的示例代码
May 24 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中文分词系统SCWS安装和使用实例
2014/04/11 PHP
ThinkPHP的截取字符串函数无法显示省略号的解决方法
2014/06/25 PHP
利用switch语句进行多选一判断的实例代码
2016/11/14 PHP
JSON辅助格式化处理方法
2013/03/26 Javascript
将form表单中的元素转换成对象的方法适用表单提交
2014/05/02 Javascript
Node.js中使用事件发射器模式实现事件绑定详解
2014/08/15 Javascript
ajax+jQuery实现级联显示地址的方法
2015/05/06 Javascript
JavaScrip常见的一些算法总结
2015/12/28 Javascript
Knockoutjs 学习系列(二)花式捆绑
2016/06/07 Javascript
AngularJs Understanding the Controller Component
2016/09/02 Javascript
JS添加或修改控件的样式(Class)实现方法
2016/10/15 Javascript
原生js实现手风琴功能(支持横纵向调用)
2017/01/13 Javascript
js实现文字选中分享功能
2017/01/25 Javascript
gulp解决跨域的配置文件问题
2017/06/08 Javascript
详解node单线程实现高并发原理与node异步I/O
2017/09/21 Javascript
将Sublime Text 3 添加到右键中的简单方法
2017/12/12 Javascript
JS函数节流和函数防抖问题分析
2017/12/18 Javascript
Vue框架之goods组件开发详解
2018/01/25 Javascript
JavaScript数组基于交换的排序示例【冒泡排序】
2018/07/21 Javascript
利用原生JS实现data方法示例代码
2019/05/28 Javascript
[43:47]DOTA2上海特级锦标赛主赛事日 - 4 败者组第四轮#2 MVP.Phx VS Fnatic第一局
2016/03/05 DOTA
[00:10]神之谴戒
2019/03/06 DOTA
详解python3 + Scrapy爬虫学习之创建项目
2019/04/12 Python
Python后台开发Django会话控制的实现
2019/04/15 Python
Python项目 基于Scapy实现SYN泛洪攻击的方法
2019/07/23 Python
HTML5 和小程序实现拍照图片旋转、压缩和上传功能
2018/10/08 HTML / CSS
英国经典球衣网站:Classic Football Shirts
2017/05/20 全球购物
激光脱毛、蓝光和护肤:Tria Beauty
2019/03/28 全球购物
荷兰网上药店:Drogisterij.net
2019/09/03 全球购物
2015年销售工作总结范文
2015/03/30 职场文书
离婚案件被告代理词
2015/05/23 职场文书
导盲犬小Q观后感
2015/06/11 职场文书
在校学生证明格式
2015/06/24 职场文书
2016公司中秋节寄语
2015/12/07 职场文书
2016年优秀团员事迹材料
2016/02/25 职场文书
nginx实现多geoserver服务的负载均衡
2022/05/15 Servers