浅谈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语言编写电脑时间自动同步小工具
Mar 08 Python
使用python获取CPU和内存信息的思路与实现(linux系统)
Jan 03 Python
python递归计算N!的方法
May 05 Python
Python实现二叉搜索树
Feb 03 Python
Python制作刷网页流量工具
Apr 23 Python
使用Django Form解决表单数据无法动态刷新的两种方法
Jul 14 Python
Python实现的三层BP神经网络算法示例
Feb 07 Python
使用Python搭建虚拟环境的配置方法
Feb 28 Python
python实现弹跳小球
May 13 Python
PyQt5多线程防卡死和多窗口用法的实现
Sep 15 Python
Django mysqlclient安装和使用详解
Sep 17 Python
python 基于opencv操作摄像头
Dec 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
虫族 ZERG 概述
2020/03/14 星际争霸
php学习 字符串课件
2008/06/15 PHP
PHP与MySQL开发的8个技巧小结
2010/12/17 PHP
php检查字符串中是否有外链的方法
2015/07/29 PHP
JS控件autocomplete 0.11演示及下载 1月5日已更新
2007/01/09 Javascript
用javascript作一个通用向导说明
2011/08/30 Javascript
JavaScript基础知识之数据类型
2012/08/06 Javascript
jqGrid读取选择的多行的某个属性代码
2014/05/18 Javascript
js实现的简单radio背景颜色选择器代码
2015/08/18 Javascript
基于jquery实现动态竖向柱状条特效
2016/02/12 Javascript
IE下JS保存图片的简单实例
2016/07/15 Javascript
jquery之别踩白块游戏的简单实现
2016/07/25 Javascript
半个小时学json(json传递示例)
2016/12/25 Javascript
node.js与C语言 实现遍历文件夹下最大的文件,并输出路径,大小
2017/01/20 Javascript
利用Ionic2 + angular4实现一个地区选择组件
2017/07/27 Javascript
Express下采用bcryptjs进行密码加密的方法
2018/02/07 Javascript
Bootbox将后台JSON数据填充Form表单的实例代码
2018/09/10 Javascript
webpack实现一个行内样式px转vw的loader示例
2018/09/13 Javascript
Angular6使用forRoot() 注册单一实例服务问题
2019/08/27 Javascript
在nuxt中使用路由重定向的实例
2020/11/06 Javascript
Python实现的最近最少使用算法
2015/07/10 Python
Flask框架学习笔记之消息提示与异常处理操作详解
2019/08/15 Python
python实现的自动发送消息功能详解
2019/08/15 Python
利用python在大量数据文件下删除某一行的例子
2019/08/21 Python
Python使用selenium + headless chrome获取网页内容的方法示例
2019/10/16 Python
Python实现企业微信机器人每天定时发消息实例
2020/02/25 Python
python退出循环的方法
2020/06/18 Python
2014年度个人工作总结
2014/11/07 职场文书
贷款承诺书
2015/01/20 职场文书
党员个人自我评价
2015/03/03 职场文书
2015年文员个人工作总结
2015/04/09 职场文书
2015年公路养护工作总结
2015/05/13 职场文书
《用字母表示数》教学反思
2016/02/17 职场文书
如何写好闭幕词
2019/04/02 职场文书
Minikube搭建Kubernetes集群
2022/03/31 Servers
Java中生成微信小程序太阳码的实现方案
2022/06/01 Java/Android