浅谈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 smtplib模块发送SSL/TLS安全邮件实例
Apr 08 Python
初步探究Python程序的执行原理
Apr 11 Python
python数据结构之列表和元组的详解
Sep 23 Python
浅谈python jieba分词模块的基本用法
Nov 09 Python
python实现可视化动态CPU性能监控
Jun 21 Python
python3.4控制用户输入与输出的方法
Oct 17 Python
修改 CentOS 6.x 上默认Python的方法
Sep 06 Python
解决tensorflow打印tensor有省略号的问题
Feb 04 Python
tensorflow生成多个tfrecord文件实例
Feb 17 Python
解决jupyter运行pyqt代码内核重启的问题
Apr 16 Python
python如何解析复杂sql,实现数据库和表的提取的实例剖析
May 15 Python
解决python中import文件夹下面py文件报错问题
Jun 01 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数组的交集array_intersect(),array_intersect_assoc(),array_inter_key()函数的小问题
2011/05/29 PHP
基于curl数据采集之单页面并行采集函数get_htmls的使用
2013/04/28 PHP
Zend Framework动作助手Json用法实例分析
2016/03/05 PHP
PHP获取网页所有连接的方法(附demo源码下载)
2016/03/30 PHP
一个高效的JavaScript压缩工具下载集合
2007/03/06 Javascript
40款非常棒的jQuery 插件和制作教程(系列二)
2011/11/02 Javascript
jquery插件开发方法(初学者)
2012/02/03 Javascript
.net,js捕捉文本框回车键事件的小例子(兼容多浏览器)
2013/03/11 Javascript
javascript中的window.location.search方法简介
2013/09/02 Javascript
jquery向上向下取整适合分页查询
2014/09/06 Javascript
jQuery中height()方法用法实例
2014/12/24 Javascript
Javascript中的几种URL编码方法比较
2015/01/23 Javascript
JS动态添加Table的TR,TD实现方法
2015/01/28 Javascript
JavaScript基础篇(3)之Object、Function等引用类型
2015/11/30 Javascript
Angular 2父子组件数据传递之@Input和@Output详解(下)
2017/07/05 Javascript
Easyui和zTree两种方式分别实现树形下拉框
2017/08/04 Javascript
vue项目webpack中Npm传递参数配置不同域名接口
2018/06/15 Javascript
layui点击按钮添加可编辑的一行方法
2018/08/15 Javascript
详解vue开发中调用微信jssdk的问题
2019/04/16 Javascript
react组件基本用法示例小结
2020/04/27 Javascript
[02:38]DOTA2亚洲邀请赛 IG战队巡礼
2015/02/03 DOTA
wxPython 入门教程
2008/10/07 Python
Python获取运行目录与当前脚本目录的方法
2015/06/01 Python
Python构建网页爬虫原理分析
2017/12/19 Python
Python打印“菱形”星号代码方法
2018/02/05 Python
Flask框架单例模式实现方法详解
2019/07/31 Python
python GUI库图形界面开发之PyQt5表格控件QTableView详细使用方法与实例
2020/03/01 Python
python实现图片横向和纵向拼接
2020/03/05 Python
Python基于Serializer实现字段验证及序列化
2020/11/04 Python
Under Armour美国官网:美国知名高端功能性运动品牌
2016/09/05 全球购物
美国优质马术服装购买网站:Breeches.com
2019/12/16 全球购物
职业生涯规划怎么写
2013/12/29 职场文书
绿色环保标语
2014/06/12 职场文书
党委书记群众路线对照检查材料思想汇报
2014/10/04 职场文书
护士工作心得体会
2016/01/25 职场文书
springboot如何初始化执行sql语句
2021/06/22 Java/Android