跨n个内核分发Python程序的最佳框架

跨n个内核分发Python程序的最佳框架,python,apache-spark,distributed-computing,Python,Apache Spark,Distributed Computing,我是分布式系统的新手,任务是分发一段现有的Python代码。目标是将代码视为二进制或库,并编写两种不同的包装: 包装器1:从环境接收大型数据流,调用Python代码对其执行一些计算,然后将其分解并将数据块(以及其他内容)发送到工作节点。在主节点中运行 包装器2:接收这些数据块,调用Python代码对它们进行一些计算,当满足特定条件时,将数据发送回主节点 重复该过程,直到没有更多数据到达主节点。如下图所示: 所以两者都存在 (1) 工人与主节点之间的通信需求以及 (2) 调用现有Python代

我是分布式系统的新手,任务是分发一段现有的Python代码。目标是将代码视为二进制或库,并编写两种不同的包装:

  • 包装器1:从环境接收大型数据流,调用Python代码对其执行一些计算,然后将其分解并将数据块(以及其他内容)发送到工作节点。在主节点中运行
  • 包装器2:接收这些数据块,调用Python代码对它们进行一些计算,当满足特定条件时,将数据发送回主节点
重复该过程,直到没有更多数据到达主节点。如下图所示:

所以两者都存在

(1) 工人与主节点之间的通信需求以及

(2) 调用现有Python代码的需要

同样重要的是,整个框架以不可知的方式看待“节点”的概念,因为它需要在节点等同于核心(物理或虚拟)的个人计算机上运行,或者在集群上运行,其中节点可以是具有多个核心的整台计算机。因此,我正在寻找一种能够帮助我实现这些目标的技术。我已经在学习ApacheSpark,但我不完全确定Spark是否允许我以流线型的方式执行Python代码,我一直在寻找想法。

作为一个简单的选项查看:

芹菜:分布式任务队列

芹菜是一项异步任务 基于分布式消息传递的队列/作业队列。它的重点是 实时操作,但也支持调度。行刑 称为任务的单元在单个或多个服务器上并发执行 使用多处理、Eventlet或gevent的工作服务器。任务可以 异步执行(后台)或同步执行(等待) 直到准备就绪)

芹菜在生产系统中被用来加工数以百万计的蔬菜 每天完成的任务数量


那么你的问题是什么?为什么给它加上spark标签?我的问题是社区是否认为spark是开发此应用程序的合适平台。如前所述,我对分布式应用程序是全新的,我希望对可能的技术领域进行有根据的搜索。我不想决定使用Pyspark,只想在将来认识到它不能以抽象形式查看节点,或者它不允许我导入要分发的代码所需的基本Python库。如果假设“apache spark”标记是多余的,则可以将其删除。apache-spark专用于大规模数据处理。所以你应该问问自己,你的数据处理实际上有多大?