【问题标题】:What are the steps involved in running the same python script in parallel in amazon ec2 or picloud在 amazon ec2 或 picloud 中并行运行相同的 python 脚本涉及哪些步骤
【发布时间】:2012-12-05 09:42:35
【问题描述】:

我在尝试尽快完成的并行处理任务上需要一些帮助。

它只是将一个较大的数据帧分成较小的块,并在每个块上运行相同的脚本。

我认为这被称为尴尬的并行。

如果有人可以建议使用亚马逊云服务或 picloud 完成此任务的模板,我将不胜感激。

我已经初步涉足亚马逊 ec2 和 picloud(我将在每个数据块上运行的脚本是在 python 中),但我意识到我可能 在没有任何帮助的情况下都不知道如何做到这一点。

因此,任何指针将不胜感激。我只是在寻找基本帮助(对于那些知道的人),例如使用 ec2 或 picloud 或其他任何东西设置并行内核或 cpus 所涉及的主要步骤,并行运行脚本,并保存脚本输出,即脚本将其计算结果写入 csv 文件。

我正在运行 ubuntu 12.04,我的 python 2.7 脚本不涉及非标准库,只涉及 os 和 csv。脚本并不复杂,只是数据对于我的机器和时间框架来说太大了。

【问题讨论】:

  • 数据有多大?它是在一个大文件中还是在许多小文件中?
  • 磁盘上的数据约为 50mb。我在其中的一小部分上运行了脚本,这需要 80 分钟才能完成。时间似乎是线性缩放的,我想我正在以这个速度查看 1000 小时的处理时间!就在那时,我想到了可能将其拆分为许多不同的核心。

标签: python parallel-processing amazon-ec2 cloud


【解决方案1】:

此脚本使用来自 PiCloud 的 Python 云库,应在本地运行。

# chunks is a list of filenames (you'll need to define generate_chunk_files)
chunks = generate_chunk_files('large_dataframe')
for chunk in chunks:
    # stores each chunk in your PiCloud bucket
    cloud.bucket.put(chunk)

def process_chunk(chunk):
    """Runs on PiCloud"""

    # saves chunk object locally
    cloud.bucket.get(chunk)
    f = open(chunk, 'r')
    # process the data however you want

# asynchronously runs process_chunk on the cloud for all chunks
job_ids = cloud.map(process_chunk, chunks)

使用Realtime Cores 功能分配特定数量的内核。

【讨论】:

  • 非常感谢这个 BrainCore,我现在将尝试在一个测试用例上实现它,我会发布我的结果。顺便说一句,我没有足够的声誉来支持你的答案,尽管我愿意!
  • 事件在这里发生了变化,我可能暂时无法发布结果。与此同时,我非常乐意接受这个作为我所寻找的答案。再次感谢 BrainCore。
猜你喜欢
  • 2014-06-03
  • 2016-10-22
  • 1970-01-01
  • 1970-01-01
  • 2013-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多