首页 > 解决方案 > 使用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()

标签: pythonmultiprocessingpool

解决方案


推荐阅读