python - 在多个 AWS 实例上运行并行 Python 代码
问题描述
我有一个可以相当容易并行化的 Python 算法。
我在本地没有资源在可接受的时间范围内运行整个事情。
对于每个工作单元,我希望能够:
- 启动 AWS 实例(EC2?)
- 将输入数据发送到实例
- 以数据作为输入运行 Python 代码
- 所有实例完成后返回结果并聚合
做这个的最好方式是什么?
AWS Lambda 是否用于此目的?这只能用 Boto3 完成吗?
我完全迷失在这里。
谢谢
解决方案
并行运行任务的常见架构是:
- 将输入放入Amazon SQS 队列
- 在多个 Amazon EC2 实例上运行工作程序,这些实例:
- 从 SQS 队列中检索消息
- 处理数据
- 将结果写入Amazon S3
- 从 SQS 队列中删除消息(表示作业完成)
然后,您可以从 Amazon S3 检索所有结果。根据它们的格式,您甚至可以使用Amazon Athena同时对所有输出文件运行 SQL 查询。
如果每个工作人员都是单线程的并且有可用的空闲 CPU,您甚至可以在同一个实例上运行多个工作人员。
推荐阅读
- arrays - 取消引用指向 1 字节数组的 4 字节指针
- azure - 将 Azure Powershell 变量分配给 DevOps Pipeline 变量
- php - 如果数组超过 1024 项,则 php 中的内存泄漏
- php - 如果在laravel中TO地址为空,如何发送邮件
- vb.net - formview中的VB.Net绑定下拉列表不起作用但不在formview中时有效
- jsf - WildFly - 如何使用“jboss-cli”获取主要配置的 JSF 版本?
- sql - 如何从一行中的日期范围中获取所有日期 - oracle sql
- tensorflow - 有没有在训练前检测 CUDA OutOfMemory 的方法?
- android - 从客户端外部向 Firestore 添加查询限制
- javascript - mongoose + express 补丁并同时使用 req.file 更新正文