【问题标题】:Parallel Processing AWS S3 Data in Python在 Python 中并行处理 AWS S3 数据
【发布时间】:2023-04-07 19:42:01
【问题描述】:

我有一个文件列表,我需要通过 lambda 函数从 S3 存储桶访问和处理这些文件,我的想法是遍历每个文件并从所有文件中并行收集数据。我的第一个想法是使用线程,这导致了一个问题,只允许我的最大池大小为 10,而我正在处理许多文件。我希望能够连续追加进程,直到所有文件都被访问,而不是创建进程列表然后并行运行它们,这在多处理池中似乎就是这种情况。如有任何建议,我将不胜感激。

【问题讨论】:

    标签: python python-3.x amazon-web-services amazon-s3 parallel-processing


    【解决方案1】:

    您可能无法获得性能提升using multi-threading under a single process in python due to the GIL。但是,您可以使用 bash 脚本同时启动多个 python 进程。

    例如,如果您想执行一些任务并将结果写入一个公共文件,您可以使用以下 prep.sh 文件来创建一个空的结果文件。

    #!/bin/bash
    
    if [ -e results.txt ]
    then
      rm results.txt
    fi
    touch results.txt
    

    以及下面的 control.sh 文件来生成您的多个 python 进程。

    #!/bin/bash
    Arr=( Do Many Things )
    for i in "${Arr[@]}"; do
        python process.py $i &
    done
    

    使用以下 process.py 文件,该文件只接受一个命令行参数并将其写入结果文件,然后是回车。

    #!/bin/python
    import sys
    
    target = sys.argv[1]
    def process(argument):
        with open("results.txt", "a") as results:
            results.write(argument+"\n")
    process(target)
    

    显然,您需要编辑 control.sh 中的数组以反映您需要访问的文件,并在 process.py 中编辑进程以反映这些文件的检索和分析。

    【讨论】:

      猜你喜欢
      • 2019-05-10
      • 1970-01-01
      • 1970-01-01
      • 2017-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-22
      • 2018-01-12
      相关资源
      最近更新 更多