python - 使用python中的进程或池多处理将具有预设变量的代理对象(函数)从主程序传递到子进程
问题描述
我正在开发一个带有一些计算功能的 PyQt5 接口作为其后端。该程序从 GUI 获取一些输入并生成数学函数,然后传递到我使用多处理的后端计算部分。问题是子进程或池,而不是采用修改后的数学函数,而是采用原始函数。我尝试了几十种方法,但都没有奏效,其中大多数专注于如何从子进程中检索对象,而不是相反。
我做了一个简单的复制。希望有人能找到解决方案或对如何以其他方式归档并行性提出建议。提前谢谢了。
import multiprocessing as mp
from multiprocessing.managers import BaseManager
class test_f():
def __init__(self,a):
global b
b=a
def f1(self,l):
return b*l
def f2(self,l):
return b*b*l
def get(self):
return b
class MyManager(BaseManager):
pass
MyManager.register('func',test_f)
def cal(para):
#with lock:
x=para[0]
func=para[1]
#setup(k.value)
print(func,a)
print(func.f1(x)+func.f2(x))
if __name__=='__main__':
manager=MyManager()
manager.start()
func=manager.func(2)
p = mp.Process(target=cal, args=[(1,func),])
p.start()
p.join()
解决方案
推荐阅读
- python - 从向量中执行逐元素减法
- python - 如何在 Postgresql 中有效地存储熊猫系列?
- java - 将 kotlin dsl gradle 转换为 groovy build.gradle
- python - 你如何正确处理python中配置文件的相对路径?
- python - 在 Python 中复制带有字段字段的 PDF 部分
- python - 使用 Python 请求来缩短 url - 慢(与 pycurl 相比)
- azure - Azure AD B2C 希望区分管理员和管理员创建的用户
- linux - Docker 挂载在 wsl2 中显示为空
- javascript - RealTime FireBase Query snapshotChanges 多次触发以进行批量更新
- jquery - 使用ajax序列化和提交后无法更新html表单