python - 在 multiprocessing.process 中将对象从主进程传递给子进程
问题描述
我有一个脚本,它使用 multiprocessing.process 针对不同的起始变量多次使用 solve_ivp 求解微分方程。我想传递一个对象作为参数。该对象应该存储各种常量等。此外,我想使用该类的函数来存储微分方程系统的每个时间步的结果。
如何将该类的对象放入我的所有子进程中?我的想法是稍后导入这些存储我需要的所有数据的对象。但现在我只是从不同文件中的类创建一个空的测试对象。我已经遇到很多问题了。我尝试了以下方法,我稍后在代码中的任何地方都没有使用对象或类,并且已经收到大量错误消息:
仅在 main 中导入模块,仅在 main 中创建一个对象,然后以某种方式将其复制到由所有子进程复制的内存中(我认为,因为它是在我启动进程之前,所以当生成子进程时,内存应该是复制),这不起作用(模块 InputData 未定义)
from multiprocessing import Process, Manager
from scipy.integrate import solve_ivp
import numpy as np
if name == 'main':
from inputdata import InputData #the class I want to use
new_input = InputData(1) #the object I want to send to all of my subprocesses
new_input_help = new_input #here I create the object in the main process
将类导入所有进程,然后稍后在某个地方创建一个对象。这在尝试导入时已经失败
from multiprocessing import Process, Manager
from scipy.integrate import solve_ivp
import numpy as np
from inputdata import InputData #the class I want to use
像 1) 但我后来将对象传递给 manager.dict() 共享内存的东西。哪个不起作用。
from multiprocessing import Process, Manager
from scipy.integrate import solve_ivp
import numpy as np
if name == 'main':
from inputdata import InputData #the class I want to use
new_input = InputData(1) #the object I want to send to all of my subprocesses
有什么想法,还是我应该不使用对象将数据存储在子进程中,而是使用 manager.list() 来存储整个函数运行的所有结果,然后将其复制到我的项目中?
解决方案
推荐阅读
- twilio - Twilio:在前门嗡嗡作响
- css - 最后带有图标的离子输入
- regex - Telegraf Regex 表达式以获取最后一个字符串
- karate - karate.robot can be accessed in .java or js files/ Can java or Js code call feature files?
- node.js - 使用池 typeorm 审计 oracle 和 nodejs 的事务
- ethereum - 智能合约提款对一次可以发送多少笔付款有限制
- java - QuickFix/J - SessionID 为空
- xpath - 如何使用Xpath提取以:开头的属性?
- c++ - 如何在 Qt 3D 中设置平面的双面纹理?
- javascript - 如何使 API 调用过期/唯一并返回一次数据?