python并发锁,分布式锁,redis分布式锁
当我们高并发时,为了确保一个方法(或代码块)同一时间只能被同一个线程执行,这时我们就需要锁来保证一致性
toollib实现了redis分布式锁。(pip install toollib) 示例代码如下:
from toollib.locker import Locker locker = Locker(redis_cli) # 创建锁实例(注:redis_cli为redis连接) if locker.acquire(acquire_timeout=2) # 获取锁 # do something locker.release() # 释放锁 # 另:with方式 locker = Locker(redis_cli, acquire_timeout=2) with locker: if locker.is_lock: # 若获取锁 pass # do something # +++++++具体示例+++++++ import threading from toollib.locker import Locker from toollib.redis_cli import RedisCli def foo(node, locker): global num with locker: if locker.is_lock: print(f{node}: 成功获取锁) for i in range(10): num += 1 print(f"{node}: {num}") if __name__ == __main__: redis_cli = RedisCli(host=127.0.0.1) # redis连接 locker = Locker(redis_cli, acquire_timeout=10, timeout=29) # 并发过大时,注意超时设置 num = 0 for node in range(100): t = threading.Thread(target=foo, args=(node, locker, )) t.start()
下一篇:
RabbitMQ安装与配置(超级简单)