微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

异步io进程代理

如何解决异步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 举报,一经查实,本站将立刻删除。