在多个Python进程之间共享字典的最佳方法是什么?
所有的程序都会从这个字典中读取数据,也会往里面写数据。我希望对这个共享字典的操作能尽可能快(比如说在50微秒以内)。
通过multiprocessing.Manager来共享字典对我来说速度不够快。
2 个回答
-2
我觉得可以用普通的互斥锁和锁来解决这个问题,对吧?可以使用'threading'库里的 lock.acquire() 和 lock.release() 这两个方法,应该会有帮助,http://docs.python.org/3.3/library/threading.html
不过我觉得你可能不会因此提高速度,因为你的设计似乎受到了 Python 全局解释器锁(GIL)的限制,这可能是个障碍。
我可能错了-
1
50微秒的时间限制其实挺宽松的。
你能不能把字典的键当作存储在memcached里的数据来处理呢?
这篇2009年的基准测试比较显示,python-memcache的速度完全够用 - http://amix.dk/blog/post/19471
还有一个叫dogpile.cache的库 - http://pypi.python.org/pypi/dogpile.cache - 也可以使用memcached作为后端存储。
我不太确定把字符串转换成python对象时会有多慢。