Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在linux下用python 3.6创建multiprocessing.Array后启动forkserver_Python_Python 3.x_Multiprocessing_Shared Memory_Python Multiprocessing - Fatal编程技术网

如何在linux下用python 3.6创建multiprocessing.Array后启动forkserver

如何在linux下用python 3.6创建multiprocessing.Array后启动forkserver,python,python-3.x,multiprocessing,shared-memory,python-multiprocessing,Python,Python 3.x,Multiprocessing,Shared Memory,Python Multiprocessing,我有一个巨大的浮点数组(大约40GB),我想与20个并行加载程序共享,以便他们放置数据。主父进程将从此数组获取数据 我希望避免默认的多处理模式,因为它会复制整个进程,其中包含子进程中未使用的其他对象 我在想,如果我能在创建特定于主父进程的对象之前创建一个共享的多处理数组并启动一个forkserver,那将是有益的。然后,当我使用multiprocessing.Process时,它将从forkserver分叉,该forkserver具有共享数组,但之后没有创建其他内容 然而,我不能真正得到这份工作

我有一个巨大的浮点数组(大约40GB),我想与20个并行加载程序共享,以便他们放置数据。主父进程将从此数组获取数据

我希望避免默认的多处理模式,因为它会复制整个进程,其中包含子进程中未使用的其他对象

我在想,如果我能在创建特定于主父进程的对象之前创建一个共享的多处理数组并启动一个forkserver,那将是有益的。然后,当我使用multiprocessing.Process时,它将从forkserver分叉,该forkserver具有共享数组,但之后没有创建其他内容

然而,我不能真正得到这份工作。如果我执行多处理。设置启动方法(“forkserver”),则随后创建的数组将不可用于forkserver。我尝试先创建数组,然后设置start方法,但在创建数组时已经设置了start方法,这会导致错误。我还尝试使用multiprocessing.get_context(“forkserver”).array()创建共享数组,但是forkserver内部没有与此数组关联的变量,因此我无法访问multiprocessing.Process中的共享数组


有什么办法使它起作用吗?我的方法有意义吗?python进程共享大数组而不共享其他数组的最有效方法是什么?

我也处理同样的问题。我将使用IPC共享内存库。如果你找到了另一个解决方案,你能分享吗?谢谢