Python 将数据写入单个计算机的最快方式?

Python 将数据写入单个计算机的最快方式?,python,linux,Python,Linux,我有一个由100台机器组成的网络,所有机器都运行Ubuntu Linux 在连续(流)的基础上,机器X被“馈送”一些实时数据。我需要编写一个python脚本,将数据作为输入,加载到内存中,对其进行处理,然后将其保存到磁盘 这是大量的数据,因此,理想情况下,我希望分割内存中的数据(使用一些逻辑),并以尽可能快的方式将数据片段发送到每台计算机。每台计算机都将接受它的一段数据,对其进行处理并将其写入本地磁盘 假设我有一个Python中的数据容器(可以是一个列表、一个字典等),它已经被处理并拆分为多个部

我有一个由100台机器组成的网络,所有机器都运行Ubuntu Linux

在连续(流)的基础上,机器
X
被“馈送”一些实时数据。我需要编写一个python脚本,将数据作为输入,加载到内存中,对其进行处理,然后将其保存到磁盘

这是大量的数据,因此,理想情况下,我希望分割内存中的数据(使用一些逻辑),并以尽可能快的方式将数据片段发送到每台计算机。每台计算机都将接受它的一段数据,对其进行处理并将其写入本地磁盘


假设我有一个Python中的数据容器(可以是一个列表、一个字典等),它已经被处理并拆分为多个部分。向每台机器发送每个“数据块”的最快方式是什么

您应该看看
pyzmq

以及zeromq(0mq)的一般指南

您有两种选择:

  • 你可以自己建立一些分配机制
  • 您可以使用现有的工具来处理分发和存储
  • 在最简单的情况下,您可以在网络中的每台机器上编写一个程序,该程序只进行侦听、处理和写入。您将从X分发到池循环中的每台机器。但是,您可能希望解决更高级别的问题,如处理节点故障或处理比其他节点需要更长时间处理的请求、向系统添加新节点等


    当您想要更多的功能时,您可能需要找到一些现有的工具来帮助您。听起来您可能想研究AMQP(用于可靠消息传递)、Hadoop(用于分布式数据处理)或更完整的NoSQL解决方案(如Cassandra或Riak)的一些组合。通过利用这些工具,您的系统将比您自己可能构建的系统更加健壮。

    您需要的是类似消息队列的功能。将消费者和生产者添加到队列很容易。消费者可以投票或通过回调获得通知…

    您是否阅读过MapReduce?它的全部目的就是这样。不幸的是,我不能给你一个特定于python的答案。但是我认为阅读这篇文章会对你有很大帮助。你能解释一下是什么让这比简单地(通过编程)
    ssh-ing
    到机器上并将数据发送到那里更好吗?你能解释一下是什么让这比简单地(通过编程)更好吗
    ssh-ing
    将数据发送到机器上?@user540009:因为0mq提供了许多不同的连接类型和交互模式,并且可能比ssh更快地分发数据块。它还支持pickle和json序列化,以在网络中移动python对象。您要求以“最快的方式”分发数据,而0mq非常快。除此之外,我不知道你想做什么,也不知道要提供什么样的约束,而不是技术上的建议。谢谢。
    0mq
    是否允许我在远程机器上运行程序?或者它只是发送消息?此外,似乎使用
    0mq
    远程机器必须“侦听”传入的消息,而使用
    ssh
    我可以直接连接到远程机器并“指示”该做什么;我只需要一种方法将数据“发送”到远程机器;
    ssh-ing
    难道不是一个好的解决方案吗?您可以使用
    ssh
    ,这将在提供某些功能(例如验证与特定主机的连接、有线保密性)的同时产生某些开销(例如,密钥协商、加密)。如果您不关心加密,请查看服务器端的SocketServer python模块。尽管如此,这种“1类”方法并没有处理主机停机、负载平衡等问题,您可能并不关心这些问题。谢谢。您是对的
    ssh
    有一些开销。但是,如果我首先初始化所有连接(需要几秒钟),然后在连接时继续向远程节点写入数据,会怎么样?在您看来,我还会有很多开销吗?运行时机器上的加密开销可能可以忽略不计。