首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python threadsafe对象缓存

python threadsafe对象缓存
EN

Stack Overflow用户
提问于 2008-10-17 19:05:21
回答 6查看 17.7K关注 0票数 15

我已经实现了一个python have服务器。每个http请求产生一个新的线程。我有一个在内存中缓存对象的需求,因为它是一个the服务器,我希望缓存是线程安全的。python中是否有线程安全对象缓存的标准实现?我发现了以下内容

http://freshmeat.net/projects/lrucache/

这看起来不是线程安全的。有没有人能给我一个很好的python线程安全缓存的实现?

谢谢!

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2008-10-18 17:48:05

默认情况下,Python中的许多操作都是线程安全的,所以一个标准的字典应该是可以的(至少在某些方面)。这主要归功于GIL,它将有助于避免一些更严重的线程问题。

这里有一个可能有用的列表:http://coreygoldberg.blogspot.com/2008/09/python-thread-synchronization-and.html

虽然这些操作的原子性质只是意味着,如果有两个线程同时访问一个字典,则不会有完全不一致的状态。这样你就不会有一个损坏的值。但是,您(与大多数多线程编程一样)不能依赖这些原子操作的特定顺序。

所以长话短说...

如果您有相当简单的需求,并且不关心写入缓存的内容的顺序,那么您可以使用字典,并且知道您将始终获得一致/未损坏的值(它可能已经过期)。

如果你想确保读写的一致性,那么你可能想看看Django的本地内存缓存:

http://code.djangoproject.com/browser/django/trunk/django/core/cache/backends/locmem.py

它使用读/写锁进行锁定。

票数 10
EN

Stack Overflow用户

发布于 2008-10-17 20:39:48

每个请求的线程数通常不是一个好主意。如果您的服务器遇到了负载的巨大峰值,它将使服务器瘫痪。考虑使用一个线程池,它可以在使用高峰时增长到有限的大小,并在负载较轻时缩小到较小的大小。

票数 8
EN

Stack Overflow用户

发布于 2008-10-17 20:18:25

您可能希望改用memcached。它非常快,非常稳定,非常流行,有很好的python库,如果你需要,它将允许你成长为分布式缓存:

http://www.danga.com/memcached/

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/213455

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档