0


python 多进程共享变量 Value 使用技巧

python 多进程共享变量 Value 使用技巧

前言

在使用 **python **的多进程时,需要多个进程共享一个状态变量,于是考虑使用multiprocessing.Value,来进行进程之间的共享

一、Value 的构造函数:

multiprocessingValue(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类型可从下表查阅


本文转载自: https://blog.csdn.net/weixin_45860565/article/details/119152300
版权归原作者 唐僧洗头用飘柔dp 所有, 如有侵权,请联系我们删除。

“python 多进程共享变量 Value 使用技巧”的评论:

还没有评论