gpt4 book ai didi

Python子进程的cpu使用率随机下降到0%,导致进程为 "hang up"

转载 作者:太空宇宙 更新时间:2023-11-03 14:57:46 24 4
gpt4 key购买 nike

我运行了几个 python 子进程来将数据迁移到 S3。我注意到我的 python 子进程经常下降到 0%,并且这种情况持续超过一分钟。这会显着降低迁移过程的性能。

这是子流程的图片: enter image description here

子进程执行以下操作:

  1. 查询数据库中的所有表。
  2. 为每个表生成子进程。

    for table in tables:
    print "Spawn process to process {0} table".format(table)
    process = multiprocessing.Process(name="Process " + table,
    target=target_def,
    args=(args, table))
    process.daemon = True
    process.start()
    processes.append(process)
    for process in processes:
    process.join()
  3. 使用 Limit 和 Offset 从数据库查询数据。我使用 PyMySQL 库来查询数据。

  4. 将返回的数据转换为另一个结构。 construct_struct_def() 是将行转换为另一种格式的函数。

    buffer_string = []
    for i, row_file in enumerate(row_files):
    if i == num_of_rows:
    buffer_string.append( json.dumps(construct_structure_def(row_file)) )
    else:
    buffer_string.append( json.dumps(construct_structure_def(row_file)) + "\n" )
    content = ''.join(buffer_string)
  5. 将转换后的数据写入文件并使用 gzip 对其进行压缩。

    with gzip.open(file_path, 'wb') as outfile:
    outfile.write(content)
    return file_name
  6. 将文件上传到 S3。

  7. 重复步骤 3 - 6,直到不再需要提取行。

为了更快地加快速度,我使用 multiprocesses.Process 内置库为每个表创建子流程。

我在虚拟机中运行了我的脚本。以下是规范:

  • 处理器:Intel(R) Xeon(R) CPU E5-2690 @ 2.90 Hz 2.90 GHz(2 个进程)
  • 虚拟处理器:4
  • 已安装 RAM:32 GB
  • 操作系统:Windows 企业版。

我在here的帖子里看到的也就是说,主要的可能性之一是内存 I/O 限制。所以我尝试运行一个子进程来测试这一理论,但没有成功。

知道为什么会发生这种情况吗?如果你们需要更多信息,请告诉我。

提前谢谢您!

最佳答案

原来罪魁祸首是我运行的查询。查询花了很长时间才返回结果。这使得 python 脚本空闲,因此使用率为零。

关于Python子进程的cpu使用率随机下降到0%,导致进程为 "hang up",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45386035/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com