Celery或类似的多进程系统中的每个机器共享内存池

2024-06-09 09:29:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一组任务,我想在多台机器上并行运行,每个机器都有多个核心。我的线程必须在内存中快速访问这些数据,这是一个挑战。将工人隔离到不同进程中的系统需要为每个工作线程复制此内存,这是不可接受的-我没有每个内核有12GB备用内存的机器。在

PySpark的“广播”功能几乎解决了我的问题,但是PySpark在网络上分发数据时将数据序列化为一个字符串,Spark的其中一个子系统在数据序列化时遇到了巨大的数据量而退出。在

我在Linux上,所以我可以通过ramfs将数据放入共享内存,但我仍然需要一种方法来获得机器级的粒度。设置共享内存并分发对它的引用应该在每台计算机上进行一次,而不是每个任务或每个工作线程一次。我正在努力寻找在任何分布式任务库(Celery、ipyparallel等)上实现这一点的方法。我是否被困在使用Python的多处理功能来运行自己的任务分发器?在


Tags: 数据方法内存功能机器核心序列化进程