gpt4 book ai didi

Python:当多个进程同时写入 "shelve"时需要担心什么?

转载 作者:行者123 更新时间:2023-11-28 17:40:17 27 4
gpt4 key购买 nike

对于我的 python 应用程序,我正在考虑使用 shelve , 标准库的一部分。将有数百个进程,每个进程都向同一个搁置对象写入一些内容。写作将始终是将新的键值对添加到货架上。键是唯一的,因此没有两个进程会更新同一个条目。

在这种情况下会出现什么问题?

最佳答案

shelve documentation对此很明确。

The shelve module does not support concurrent read/write access to shelved objects. (Multiple simultaneous read accesses are safe.) When a program has a shelf open for writing, no other program should have it open for reading or writing. Unix file locking can be used to solve this, but this differs across Unix versions and requires knowledge about the database implementation used.

所以,如果没有进程同步,我不会这样做。

进程是如何启动的?如果它们是由主进程创建的,那么您可以查看 multiprocessing模块。使用 Queue子进程写回它们的结果,并让主进程从队列中删除项目并将它们写入货架。此类示例位于 https://stackoverflow.com/a/24501437/21945。 .

如果您没有进程层次结构,那么您将需要使用锁定来控制对 shelf 文件的读取写入访问。如果您使用的是 Linux 或类似系统,您可以使用 posix_ipc命名信号量。

另一个明显的选择是使用数据库服务器——Postgresql 或类似的。

关于Python:当多个进程同时写入 "shelve"时需要担心什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25338527/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com