前言:

在使用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')。

注意,如果我们使用的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 共享内存变量_浅谈python多进程共享变量Value的使用tips相关推荐

  1. python sys模块作用_浅谈Python中的模块

    模块 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这种组织代码的方式.在Python中,一个.py文件就称之为一个模块(Mod ...

  2. python数据类型转换原因_浅谈Python数据类型之间的转换

    Python数据类型之间的转换 函数 描述 int(x [,base]) 将x转换为一个整数 long(x [,base] ) 将x转换为一个长整数 float(x) 将x转换到一个浮点数 compl ...

  3. python采用函数编程模式_浅谈Python 函数式编程

    匿名函数lambda表达式 什么是匿名函数? 匿名函数,顾名思义就是没有名字的函数,在程序中不用使用 def 进行定义,可以直接使用 lambda 关键字编写简单的代码逻辑.lambda 本质上是一个 ...

  4. python 中arange函数_浅谈Python中range与Numpy中arange的比较

    本文先比较range与arange的异同点,再详细介绍各自的用法,然后列举了几个简单的示例,最后对xrange进行了简单的说明. 1. range与arange的比较 (1)相同点:A.参数的可选性. ...

  5. python方法解析顺序_浅谈Python的方法解析顺序(MRO)

    方法解析顺序, Method Resolution Order 从一段代码开始 考虑下面的情况: class A(object): def foo(self): print('A.foo()') cl ...

  6. python列表使用判断_浅谈Python数据类型判断及列表脚本操作

    数据类型判断 在python(版本3.0以上)使用变量,并进行值比较时.有时候会出现以下错误: TypeError: unorderable types: NoneType() < int() ...

  7. python中文字符串编码_浅谈python下含中文字符串正则表达式的编码问题

    前言 Python文件默认的编码格式是ascii ,无法识别汉字,因为ascii码中没有中文. 所以py文件中要写中文字符时,一般在开头加 # -*- coding: utf-8 -*- 或者 #co ...

  8. python中怎么计数_浅谈python中统计计数的几种方法和Counter详解

    1) 使用字典dict() 循环遍历出一个可迭代对象中的元素,如果字典没有该元素,那么就让该元素作为字典的键,并将该键赋值为1,如果存在就将该元素对应的值加1. lists = ['a','a','b ...

  9. python打开方式错误_浅谈python 调用open()打开文件时路径出错的原因

    昨晚搞鼓了一下python的open()打开文件 代码如下 def main(): infile =open("C:\Users\Spirit\Desktop\bc.txt",'r ...

最新文章

  1. Android组件化打造知乎日报系列(一)—— 项目架构搭建
  2. golang操作mysql数据库(Go-SQL-Driver/MySQL)
  3. 中国移动高同庆:积极推动6G形成全球统一标准体系,避免产业割裂
  4. java 事件监听应用_Spring Boot应用事件监听示例详解
  5. axios请求跨域前端解决_前端跨域请求axios里面withCredentials: true
  6. 俄罗斯网络间谍被指攻击斯洛伐克政府长达数月
  7. 一文详解三维重建中的立体匹配
  8. SQL Server 置疑修复
  9. Ubuntu桌面管理器
  10. Belief propagation
  11. 服务器支持 TLS Client-initiated 重协商攻击(CVE-2011-1473复现验证)
  12. 快速正确的搭建一个微服务架构需要了解的那几个点
  13. MOOS通信框架初探(一)
  14. 判断自定义异形view的点击事件是否在绘制区域内
  15. 【CAD.Net】第四课:添加实体类和符号表到图纸
  16. hiho 1613 墨水滴 [Offer收割]编程练习赛32 Problem C 优先队列+BFS
  17. 如何看待测试过程中的漏测发生
  18. dataBinding 理解
  19. python判断正数和负数教案_正数和负数优秀教案
  20. oracle锁表后,系统能否自动解锁?

热门文章

  1. ensp支持哪个版本virtualbox_如何在 Fedora 中安装 VirtualBox
  2. jvm类加载机制_JVM 类加载机制
  3. matlab平面绘图命令
  4. BZOJ-3110-K大数查询-ZJOI2013-暴力
  5. 20201010《近代数学》第1节课 笔记
  6. LOJ #2734 Luogu P3615 [JOI2016春季合宿]Toilets (结论、贪心)
  7. python闭环最短路径_python实现最短路径的实例方法
  8. python 游戏脚本 vbs_用VBScript制作QQ自动登录的脚本代码
  9. 用python创建微信机器人_用Python创建微信机器人
  10. redhat安装wine教程_可能是最漂亮的国产Linux,U盘安装DeepinLinux 深度操作系统