浅谈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实现baidu hi自动登录的代码
Feb 10 Python
python读取LMDB中图像的方法
Jul 02 Python
python实现扫描ip地址的小程序
Apr 16 Python
Python企业编码生成系统总体系统设计概述
Jul 26 Python
python 并发编程 非阻塞IO模型原理解析
Aug 20 Python
python飞机大战pygame游戏框架搭建操作详解
Dec 17 Python
利用Python脚本实现自动刷网课
Feb 03 Python
用python介绍4种常用的单链表翻转的方法小结
Feb 24 Python
python 比较字典value的最大值的几种方法
Apr 17 Python
用 Python 制作地球仪的方法
Apr 24 Python
快速创建python 虚拟环境
Nov 28 Python
Python爬虫基础讲解之请求
May 13 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面向对象 字段的声明与使用
2012/06/14 PHP
PHP Opcache安装和配置方法介绍
2015/05/28 PHP
PHP使用curl_multi_select解决curl_multi网页假死问题的方法
2018/08/15 PHP
php精度计算的问题解析
2019/06/21 PHP
Prototype使用指南之selector.js
2007/01/10 Javascript
js no-repeat写法 背景不重复
2009/03/18 Javascript
js捕获鼠标滚轮事件代码
2013/12/16 Javascript
Javascript学习笔记之函数篇(四):arguments 对象
2014/11/23 Javascript
pace.js页面加载进度条插件
2015/09/29 Javascript
Express的路由详解
2015/12/10 Javascript
js随机生成26个大小写字母
2016/02/12 Javascript
原生 JS Ajax,GET和POST 请求实例代码
2016/06/08 Javascript
基于JS如何实现类似QQ好友头像hover时显示资料卡的效果(推荐)
2016/06/09 Javascript
JavaScript中实现键值对应的字典与哈希表结构的示例
2016/06/12 Javascript
修改jquery中dialog的title属性方法(推荐)
2016/08/26 Javascript
Vue 过渡(动画)transition组件案例详解
2017/01/22 Javascript
jQuery实现滚动效果
2017/11/17 jQuery
详解Vue的钩子函数(路由导航守卫、keep-alive、生命周期钩子)
2018/07/24 Javascript
如何换个角度使用VUE过滤器详解
2019/09/11 Javascript
详解js location.href和window.open的几种用法和区别
2019/12/02 Javascript
Vue学习笔记之计算属性与侦听器用法
2019/12/07 Javascript
jquery实现点击左右按钮切换图片
2021/01/27 jQuery
[00:36]DOTA2勇士令状莱恩声望物品——冥晶之厄展示
2018/05/25 DOTA
Python中文编码那些事
2014/06/25 Python
python正则表达式的使用
2017/06/12 Python
python中的字典操作及字典函数
2018/01/03 Python
使用Rasterio读取栅格数据的实例讲解
2019/11/26 Python
python的json中方法及jsonpath模块用法分析
2019/12/06 Python
Django 实现 Websocket 广播、点对点发送消息的代码
2020/06/03 Python
html5新特性与用法大全
2018/09/13 HTML / CSS
房地产销售大学生自我评价分享
2013/11/11 职场文书
担保书怎么写
2014/04/01 职场文书
社区志愿者活动总结
2014/06/26 职场文书
优秀团员事迹材料1500字
2014/08/31 职场文书
2014年幼儿园国庆主题活动方案
2014/09/16 职场文书
求职简历自我评价怎么写
2015/03/10 职场文书