gpt4 book ai didi

内存中的python多处理共享文件

转载 作者:太空宇宙 更新时间:2023-11-03 12:08:24 25 4
gpt4 key购买 nike

我正在用 python 实现一个多处理程序,对于每个子进程,它们都需要读取文件的一部分。

由于从磁盘读取文件的开销很大,所以我只想读取一次并放在共享内存中。

<强>1。如果我使用 mmap,它可以与 fork 一起使用,但我找不到在多处理模块中的进程之间共享 mmap 文件的方法。

<强>2。如果我将文件读入 str,并将字符串存储在 sharedctypes.RawArray('c', str) 中,如果 str 中有\0,则会发生错误,生成的 RawArray 是文件的截断.

有什么想法吗?

最佳答案

您可以使用多处理管理器吗?使 mmped 文件成为 Namespace() 函数返回的 NameSpace 对象的属性,并将其引用传递给每个进程。

from multiprocessing import Manager

mgr = Manager()
ns = mgr.Namespace()
ns.df = my_dataframe

# now just give your processes access to ns, i.e. most simply
# p = Process(target=worker, args=(ns, work_unit))

(我的回答基本是从here复制过来的)

关于内存中的python多处理共享文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18289215/

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