关于在工作节点上分发python数据/代码的建议?

关于在工作节点上分发python数据/代码的建议?,python,hadoop,twisted,distributed,celery,Python,Hadoop,Twisted,Distributed,Celery,我开始冒险开发分布式代码,但我很难根据所有的东西找出适合我需要的解决方案。基本上,我有一个python数据列表,需要用一个函数来处理。此函数有几个嵌套的for循环,但对于列表中的每个项目不会花费太长的时间(大约一分钟)。我的问题是列表非常大(3000多个项目)。我正在研究多服务器处理,但我想尝试多服务器处理(因为理想情况下,如果数据变大,我希望能够选择在作业期间添加更多服务器,以使其运行更快) 我基本上是在寻找一些我可以通过它来分发这个数据列表的东西(不是超级需要的,但是如果我也可以通过它来分发

我开始冒险开发分布式代码,但我很难根据所有的东西找出适合我需要的解决方案。基本上,我有一个python数据列表,需要用一个函数来处理。此函数有几个嵌套的for循环,但对于列表中的每个项目不会花费太长的时间(大约一分钟)。我的问题是列表非常大(3000多个项目)。我正在研究多服务器处理,但我想尝试多服务器处理(因为理想情况下,如果数据变大,我希望能够选择在作业期间添加更多服务器,以使其运行更快)

我基本上是在寻找一些我可以通过它来分发这个数据列表的东西(不是超级需要的,但是如果我也可以通过它来分发我的代码库就好了)

所以我的问题是,我可以使用什么样的软件包来实现这一点?我的数据库是hbase,所以我已经运行了hadoop(但从未使用过hadoop,只是将其用于数据库)。我看了看芹菜和绞盘菜,但我不知道哪一种适合我的需要

有什么建议吗?

请查看。Python绑定可通过以下方式获得。从一个简单的开始,运行几个

在python中使用rabbitMQ这样的外部引擎进行分布式计算的实验可能看起来很麻烦(安装和配置rabbit有一个很小的学习曲线),但您可能会发现它在以后更有用

。。。芹菜可以和拉比MQ、结帐和我强烈推荐的

一起使用。您可以定义对列表中的单个项目进行操作的任务:

from celery.task import task
@task
def process(i):
    # do something with i
    i += 1
    # return a result
    return i
您可以轻松地并行化如下列表:

results = []
todo = [1,2,3,4,5]
for arg in todo:
    res = process.apply_async(args=(arg))
    results.append(res)

all_results = [res.get() for res in results]
通过增加更多芹菜工人,这很容易扩展