前言:

在使用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就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。

华山资源网 Design By www.eoogi.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
华山资源网 Design By www.eoogi.com

稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!

昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。

这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。

而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?