首页 > 解决方案 > 在多个 AWS 实例上运行并行 Python 代码

问题描述

我有一个可以相当容易并行化的 Python 算法。

我在本地没有资源在可接受的时间范围内运行整个事情。

对于每个工作单元,我希望能够:

  1. 启动 AWS 实例(EC2?)
  2. 将输入数据发送到实例
  3. 以数据作为输入运行 Python 代码
  4. 所有实例完成后返回结果并聚合

做这个的最好方式是什么?

AWS Lambda 是否用于此目的?这只能用 Boto3 完成吗?

我完全迷失在这里。

谢谢

标签: pythonmultithreadingamazon-web-servicesparallel-processingcloud

解决方案


并行运行任务的常见架构是:

  • 将输入放入Amazon SQS 队列
  • 在多个 Amazon EC2 实例上运行工作程序,这些实例:
    • 从 SQS 队列中检索消息
    • 处理数据
    • 将结果写入Amazon S3
    • 从 SQS 队列中删除消息(表示作业完成)

然后,您可以从 Amazon S3 检索所有结果。根据它们的格式,您甚至可以使用Amazon Athena同时对所有输出文件运行 SQL 查询。

如果每个工作人员都是单线程的并且有可用的空闲 CPU,您甚至可以在同一个实例上运行多个工作人员。


推荐阅读