Python对象的共享锁

0 投票
1 回答
1389 浏览
提问于 2025-04-17 23:04

我正在用Flask和Gunicorn在Heroku上开发一个小型的网页应用。因为我只是做个原型,所以我只有一个网页进程(叫做dyno),并且在这个进程里启动了一个工作线程。这个网页应用只是返回一个全局对象的JSON数据,这个对象会定期被工作线程更新,工作线程是用来监控一个外部网页服务的。全局对象每15到60分钟更新一次。我的计划是在工作线程需要更新全局对象时使用独占锁,而在网页线程中使用共享锁,这样多个请求就可以同时处理。不幸的是,Python似乎只支持独占锁,没有共享锁。我该如何确保网页线程中的一致性,也就是说,如何确保对全局对象的更新是原子的,同时又允许多个线程只读访问这个对象呢?

1 个回答

1

因为更新的频率很低,所以你不如直接复制一份对象,更新这份复制的对象,然后再把全局变量指向这个新的对象。Python中的简单赋值是原子的,所以你根本不需要任何锁。

撰写回答