kateli1991

如何以原子方式将项添加到memcached列表(在Python中)



下面是我的简单Python memcached代码:

import memcache
memcache_client = memcache.Client(['127.0.0.1:11211'], debug=True)
key = "myList"
obj = ["A", "B", "C"]
memcache_client.set(key, obj)

现在,假设我想在缓存为myList的列表中追加一个元素“D”,如何以原子的方式执行呢?在

我知道这是错误的,因为它不是原子的:

^{pr2}$

上面的语句包含一个竞争条件。如果另一个线程在正确的时候执行相同的指令,那么其中一个更新将被删除。在

我怎样才能解决这个比赛条件?如何自动更新存储在memcached中的列表或字典?在


已被浏览了1028次
6 日,18 小时 之前提问
1 个回答
fefe Tyson

如果不想接收竞争条件,则必须使用线程模块中的锁原语。例如

lock = threading.Lock()

def thread_func():
    obj = get_obj()
    lock.acquire()
    memcache_client.set(key, obj)
    lock.release()
评论 - 2020年7月29日 10:44

最新Python问答

推荐Python问答