集合API

模块shared_atomic

class shared_atomic.atomic_set.atomic_set(initial: Iterable, encoding='utf-8', mode='singleprocessing')

原子集合提供原子操作,不应该超过8字节

原子集合的初始化函数,不应该超过8字节

参数
  • initial – 集合的初始值,如果初始值长于8字节,请指定截短后的长度否则会失败

  • mode – 原子集合的共享模式,’singleprocessing’或者’s’是单进程模式,’multiprocessing’或者’m’是多进程模式在windows平台上只支持单进程模式,设成’multiprocessing’或者’m’会被忽略。

  • encoding – ,字符集,默认使用’utf-8’

change_mode(newmode='m')

在单进程与多进程模式之间切换,原来的内容会被复制到新的共享数组中,因为windows平台上只有单进程模式,这个函数在windows上并不存在,其它进程或者线程无法感知这种改变

参数

newmode – 需要切换的模式,’m’ 或者 ‘multiprocessing’ 是多进程模式, ‘s’ or ‘singleprocessing’单进程模式. 默认值是多进程模式

返回

decode(bits_in_bytes: bytes) set

Function to decode the bytes to set

参数
  • bits_in_bytes – bytes needs to be decoded

  • encoding – character encoding

返回

the decoded set

encode(input_set: set) -> (<class 'int'>, <class 'int'>)

function to encode the input_set with specific character encoding

参数
  • input_set – input set

  • encoding – character encoding

返回

(data in integer representation, total length in bits)

get_int() int

获取集合的整数表示,集合会被当成一个大的整数

返回

整数表示

get_set() set

原子获取集合

返回

集合

property int_value: int

与get_int一致

reencode(newencode: str)

修改集合当中字符串的字符集,如果原始空间不够,会增长字符串,如果8字节不够,它会失败

参数

newencode – 新楄码,像’utf-8’, ‘utf-16-le’

返回

set_compare_and_set(i, n: set) bool

原子比较和设置,比较自身和i,如果相等,这个过程就是读-修改-写的操作,将n的内容写入自身,如果不相等,是只读操作,自身的内容写入i.

参数
  • i – 与之比较的集合

  • n – another set to be ready to set to self if comparision return True

返回

如果自身与i相等返回真,否则返回假。

set_get_and_set(data: set) set

原子获取和设置。

参数

data – 新数据集

返回

原始数据集

set_int(integer: int)

设置集合的整数表示,整个集合当被当成一个大整数

返回

set_set(data: set)

设置这个集合的值,如果新数据比原值占用的空间多,它会扩展集合空间,失去原子性,空间占用可以用self.size来表示

参数

data – input set

返回

set_shift(i, j)

3个指针之间两两交换值,将自己的值存入j然后将i存入自身

参数
  • i – 一个原子集合

  • j – 另一个原子集合

返回

set_store(i)

将另一个集合的内容写入这个集合,如果另一个集合空间占用与这一个不同,函数会失败。

参数

i – 另一个集合用来设置自身值

返回

shift_and_add(data_prefix: int, accumulate_length: int, input_length: int, kind: int) -> (<class 'int'>, <class 'int'>)

Function to finish the shift and add of the data prefix

参数
  • data_prefix – integer for the data_prefix

  • accumulate_length – total data length in bits accumulated so far

  • input_length – length of the data segment in bits

  • kind – sorts of data

返回

(data_prefix, accumulate_length)

property value: set

与get_set和set_set一致