python是否有原子CompareAndSet操作



我需要在python程序中使用原子CompareAndSet操作,但我没有找到关于如何使用它的参考。

python提供这样的原子功能吗?

谢谢。

来自atomics库:

import atomics

a = atomics.atomic(width=4, atype=atomics.INT)
# set to 5 if a.load() compares == to 0
res = a.cmpxchg_strong(expected=0, desired=5)
print(res.success)

注意:我是这个库的作者

用于共享数据类型的Python原子。

https://sharedatomic.top

该模块可用于多进程和多线程条件下的原子操作。高性能python!高并发,高性能!

原子api具有多处理和多线程的示例:

您需要以下步骤来使用该模块:

  1. 创建子进程使用的函数,参考UIntAPI、IntAPI、BytearrayAPI、StringAPI、SetAPI、ListAPI,在每个进程中,可以创建多个线程。

     def process_run(a):
       def subthread_run(a):
         a.array_sub_and_fetch(b'x0F')
       threadlist = []
       for t in range(5000):
           threadlist.append(Thread(target=subthread_run, args=(a,)))
       for t in range(5000):
           threadlist[t].start()
       for t in range(5000):
           threadlist[t].join()
    
  2. 创建共享字节数组

    a = atomic_bytearray(b'ab', length=7, paddingdirection='r', paddingbytes=b'012', mode='m')
    
  3. 启动进程/线程以使用共享字节数组

     processlist = []
     for p in range(2):
       processlist.append(Process(target=process_run, args=(a,)))
     for p in range(2):
       processlist[p].start()
     for p in range(2):
       processlist[p].join()
     assert a.value == int.to_bytes(27411031864108609, length=8, byteorder='big')
    

相关内容

  • 没有找到相关文章

最新更新