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

Los*_*oul 6 python distributed hadoop twisted celery

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

我基本上都在寻找可以分发这个数据列表的东西(而不是超级需要但是如果我也可以通过它分发我的代码库那将会很好)

所以我的问题是,我可以使用什么包来实现这一目标?我的数据库是hbase所以我已经运行了hadoop(虽然从未使用过hadoop,只是将它用于数据库).我看着芹菜也扭曲了,但我很困惑哪个适合我的需要.

有什么建议?

jte*_*ace 4

我强烈推荐芹菜。您可以定义对列表中的单个项目进行操作的任务:

from celery.task import task
@task
def process(i):
    # do something with i
    i += 1
    # return a result
    return i
Run Code Online (Sandbox Code Playgroud)

您可以轻松地并行化列表,如下所示:

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]
Run Code Online (Sandbox Code Playgroud)

只需添加更多 celery 工作人员即可轻松扩展。