在 Python 进程之间共享大型(只读)二进制字符串?



我有一个大的只读bytes对象,我需要在几个不同的Python(3(进程中对其进行操作,每个进程都根据他们的工作"返回"(添加到结果队列(结果列表。

由于此对象非常大且只读,因此我希望避免将其复制到每个工作进程的地址空间中。我所做的研究表明,共享内存是解决这个问题的正确方法,但我找不到一个好的资源/示例来说明如何使用multiprocessing模块做到这一点。

提前谢谢。

您可以使用multiprocessing.Array,它类似于ctypes.Array,但用于共享内存,当给定ctypes类型时。

# No lock needed, as no write will be done.
array = multiprocessing.Array(ctypes.c_char, long_byte_string, lock=False)

例如:

>>> import multiprocessing
>>> import ctypes
>>> array = multiprocessing.Array(ctypes.c_char, b'x01x02xffxfe', lock=False)
>>> array[0]
b'x01'
>>> array[2:]
b'xffxfe'
>>> array[:]
b'x01x02xffxfe'
>>> b'xff' in array
True

相关内容

  • 没有找到相关文章

最新更新