【发布时间】:2018-07-04 10:11:11
【问题描述】:
对于 Python 库 fluidimage 的实习,我们正在研究使用库 trio 编写具有客户端/服务器模型的 HPC 并行应用程序是否是一个好主意。
对于异步编程和 i/o,trio 确实很棒!
然后,我想知道如何
- 派生进程(执行 CPU-GPU 受限工作的服务器)
- 在进程之间通信复杂的 Python 对象(可能包含大型 numpy 数组)。
我没有在其文档中找到使用 trio 执行此操作的推荐方法(即使 the echo client/server tutorial 是一个好的开始)。
在 Python 中生成进程并进行通信的一种明显方法是使用 multiprocessing。
在 HPC 环境中,我认为一个好的解决方案是使用 MPI (http://mpi4py.readthedocs.io/en/stable/overview.html#dynamic-process-management)。作为参考,我还不得不提到rpyc(https://rpyc.readthedocs.io/en/latest/docs/zerodeploy.html#zerodeploy)。
我不知道是否可以将这些工具与 trio 一起使用,以及这样做的正确方法是什么。
一个有趣的相关问题
备注PEP 574
在我看来,PEP 574(参见https://pypi.org/project/pickle5/)也可能是解决这个问题的好方法的一部分。
【问题讨论】:
标签: python python-3.x numpy multiprocessing python-trio