首页 > 解决方案 > 如何使用 Pyro4 在不同主机上实现多处理

问题描述

我正在尝试在不同的主机上实现 Pyro4。

在工作节点上,我以这种方式实现了多处理:

    import Pyro4
    from multiprocessing import Pool, Manager

    @Pyro4.expose
    class PyroClass(object):


    def parallel_calls():
        pool = Pool()
        try:
            pool.map(self.function, enumerate(self.p.results()))
        finally:
            pool.close()
            pool.join()

    def function_name(self):
        print("test")

但是,这种多处理似乎不起作用。

这里的概念是,在每台主机上,核心将被最大化。

我对此仍然很陌生,我不知道解决方法。

标签: pythonmultithreadingmultiprocessingremote-serverpyro4

解决方案


显然,Pyro4 不支持 multiprocessing.Pool。

对于解决方法,我以 ff 方式实现了多处理:

try:
    processes = [Process(target=self.__function_name, args=(result,)) for result in enumerate(self.p.results())]

    for p in processes:
        p.start()

    for p in processes:
        p.join()
except Exception as e:
    print(e)

推荐阅读