Python对象的共享锁

时间:2014-03-20 03:19:16

标签: python multithreading locking

我正在Heroku上使用Flask / Gunicorn开发一个小型Web应用程序。由于我只是原型设计,因此我有一个Web流程(dyno),其中一个工作线程由同一个流程启动。 Web应用程序只返回一个全局对象的JSON转储,该转储由监视外部Web服务的工作线程定期更新。全局对象每15到60分钟更新一次。我的计划是在需要更新全局对象时在工作线程中使用独占锁,并在Web线程中使用共享锁,以便同时满足多个请求。不幸的是,看起来Python并没有共享锁,只有独占锁。如何确保Web线程的一致性,即如何确保对全局对象的更新是原子的,同时允许对对象进行多次只读访问?

1 个答案:

答案 0 :(得分:1)

由于更新非常频繁,因此您最好只制作对象的副本,更新副本,然后更新全局变量以指向新对象。 python中的简单赋值是原子的,所以你根本不需要任何锁。