异步io进程代理

问题描述

我正在寻找一种方法或库来与不同进程的对象进行异步通信。这是一个示例,我想将 Solver 放在不同的进程上,但仍然能够经常与求解器通信。这里重要的是,Solver 的初始化非常昂贵,因此每个进程只能执行一次,并且应该可以用于多次 solve 调用

class Solver:
    def __init__(self):
        # Initializing this object is very expensive so it should be done only once
        super_expensive_initialization(self)

    async def solve(self,task):
        # This function uses asyncio to do a lot of things in parallel that will overall 
        # use this process very well
        solution = asyncio.gather([self._highly_asyncronous_solve(task) for i in range(200)])

        return await solution


    async def _highly_asyncronous_solve(self,a):
        ...


# <<< This part is what I am looking a solution for
my_solver_proxy_a = run_in_process_and_return_proxy(lambda: Solver(config_a))
my_solver_proxyb = run_in_process_and_return_proxy(lambda: Solver(config_b))
# >>>

tasks = [task_1,task_2,...]

schedule_tasks_in_parallel(tasks,[my_solver_proxy_a,my_solver_proxyb])

我希望你能理解我想要实现的目标。 multiprocessing.Manager 似乎与我想要做的类似,但我需要通过代理进行非阻塞调用

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)