问题描述
我正在寻找一种方法或库来与不同进程的对象进行异步通信。这是一个示例,我想将 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 (将#修改为@)