【发布时间】:2021-03-03 01:08:23
【问题描述】:
有什么方法可以让 Python 中创建的 SharedMemory 对象在进程之间持久存在?
如果在交互式 python 会话中调用以下代码:
>>> from multiprocessing import shared_memory
>>> shm = shared_memory.SharedMemory(name='test_smm', size=1000000, create=True)
它在 Linux 机器上的/dev/shm/ 中创建一个文件。
ls /dev/shm/test_smm
/dev/shm/test_smm
但是当 python 会话结束时,我得到以下信息:
/usr/lib/python3.8/multiprocessing/resource_tracker.py:216: UserWarning: resource_tracker: There appear to be 1 leaked shared_memory objects to clean up at shutdown
warnings.warn('resource_tracker: There appear to be %d
test_smm 不见了:
ls /dev/shm/test_smm
ls: cannot access '/dev/shm/test_smm': No such file or directory
那么有什么办法可以让python中创建的共享内存对象跨进程运行保持不变呢?
使用 Python 3.8 运行
【问题讨论】:
-
您能否在程序退出时将状态转储到文件中,并在其他进程启动时加载该状态?
-
我不能。该进程将连续写入,并且有另一个进程正在读取它。因此,如果出现任何问题并且进程崩溃或退出,我需要内存来保持。如果我使用
sysv_ipc,我可以做到这一点。
标签: python python-3.x multiprocessing shared-memory