浅谈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编写一个最基础的代码解释器的要点解析
Jul 12 Python
python3.5 tkinter实现页面跳转
Jan 30 Python
Python实现自动上京东抢手机
Feb 06 Python
python smtplib发送带附件邮件小程序
May 22 Python
python scp 批量同步文件的实现方法
Jan 03 Python
Python爬虫动态ip代理防止被封的方法
Jul 07 Python
详解Python对JSON中的特殊类型进行Encoder
Jul 15 Python
Python 函数list&read&seek详解
Aug 28 Python
wxpython多线程防假死与线程间传递消息实例详解
Dec 13 Python
python加密解密库cryptography使用openSSL生成的密匙加密解密
Feb 11 Python
python GUI库图形界面开发之PyQt5线程类QThread详细使用方法
Feb 26 Python
Python之matplotlib绘制饼图
Apr 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
推荐一篇入门级的Class文章
2007/03/19 PHP
PHP下用rmdir实现删除目录的三种方法小结
2008/04/20 PHP
PHP xpath()函数讲解
2019/02/11 PHP
Mootools 1.2教程 Tooltips
2009/09/15 Javascript
Jquery刷新页面背景图片随机变换的实现方法
2013/03/15 Javascript
JS处理json日期格式化问题
2015/10/01 Javascript
js表单中选择框值的获取及表单的序列化
2015/12/17 Javascript
理解javascript封装
2016/02/23 Javascript
jQuery simpleModal插件的使用介绍
2016/08/30 Javascript
微信小程序 获取设备信息 API实例详解
2016/10/02 Javascript
jquery利用json实现页面之间传值的实例解析
2016/12/12 Javascript
详解Vue.use自定义自己的全局组件
2017/06/14 Javascript
Vue 滚动行为的具体使用方法
2017/09/13 Javascript
vue源码入口文件分析(推荐)
2018/01/30 Javascript
vue-cli3配置与跨域处理方法
2019/08/17 Javascript
详解如何在Vue项目中发送jsonp请求
2019/10/25 Javascript
vue项目实现图片上传功能
2019/12/23 Javascript
Python代码调试的几种方法总结
2015/04/15 Python
Python实现的简单计算器功能详解
2018/08/25 Python
python实现名片管理系统
2018/11/29 Python
Python求一批字符串的最长公共前缀算法示例
2019/03/02 Python
设置jupyter中DataFrame的显示限制方式
2020/04/12 Python
pycharm中如何自定义设置通过“ctrl+滚轮”进行放大和缩小实现方法
2020/09/16 Python
解决virtualenv -p python3 venv报错的问题
2021/02/05 Python
Parfumdreams英国:香水和化妆品
2019/05/10 全球购物
Android面试宝典
2013/08/06 面试题
公证委托书模板
2014/04/03 职场文书
环保倡议书300字
2014/05/15 职场文书
详细的本科生职业生涯规划范文
2014/09/16 职场文书
工人先进事迹材料
2014/12/26 职场文书
2015年社区流动人口工作总结
2015/05/12 职场文书
环保建议书作文300字
2015/09/14 职场文书
2016公司新年问候语
2015/11/11 职场文书
Vue组件更新数据v-model不生效的解决
2022/04/02 Vue.js
JavaScript中的LHS和RHS分析详情
2022/04/06 Javascript
戴尔Win11系统no bootable devices found解决教程
2022/09/23 数码科技