我试图在rpyc
服务中使用多处理包,但是ValueError: pickling is disabled
当我尝试从客户端调用公开的函数时得到。我了解该multiprocesing
程序包使用酸洗在进程之间传递信息,并且不允许酸洗,rpyc
因为它是不安全的协议。所以我不确定将多处理与 rpyc 一起使用的最佳方法(或者是否有)。如何在 rpyc 服务中使用多处理?这是服务器端代码:
import rpyc
from multiprocessing import Pool
class MyService(rpyc.Service):
def exposed_RemotePool(self, function, arglist):
pool = Pool(processes = 8)
result = pool.map(function, arglist)
pool.close()
return result
if __name__ == "__main__":
from rpyc.utils.server import ThreadedServer
t = ThreadedServer(MyService, port = 18861)
t.start()
这是产生错误的客户端代码:
import rpyc
def square(x):
return x*x
c = rpyc.connect("localhost", 18861)
result = c.root.exposed_RemotePool(square, [1,2,3,4])
print(result)