gpt4 book ai didi

python - 用于大型只读存储的 Python Multiprocessing Manager dict 的替代方案

转载 作者:行者123 更新时间:2023-12-01 17:12:04 26 4
gpt4 key购买 nike

我正在将多重处理与进程使用的大型(~5G)只读字典一起使用。我首先将整个字典传递给每个进程,但遇到了内存限制,因此改为使用多处理管理器字典(读完此文 How to share a dictionary between multiple processes in python without locking 后)

自更改以来,性能大幅下降。对于更快的共享数据存储有哪些替代方案?该字典有一个 40 个字符串键和 2 个小字符串元素元组数据。

最佳答案

使用内存映射文件。虽然这可能听起来很疯狂(性能方面),但如果您使用一些聪明的技巧,情况可能并非如此:

  1. 对键进行排序,以便您可以在文件中使用二分搜索来定位记录
  2. 尝试使文件的每一行长度相同(“固定宽度记录”)

如果您不能使用固定宽度记录,请使用以下伪代码:

Read 1KB in the middle (or enough to be sure the longest line fits *twice*)
Find the first new line character
Find the next new line character
Get a line as a substring between the two positions
Check the key (first 40 bytes)
If the key is too big, repeat with a 1KB block in the first half of the search range, else in the upper half of the search range

如果性能不够好,请考虑用 C 编写扩展。

关于python - 用于大型只读存储的 Python Multiprocessing Manager dict 的替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19132394/

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