【问题标题】:How to run external program on multiple cpu cores using python?如何使用 python 在多个 cpu 内核上运行外部程序?
【发布时间】:2018-10-20 17:10:39
【问题描述】:

我正在尝试使用 python 在外部程序 CalculiX 上运行多个模拟。我知道 python 脚本不能在多个 cpu 内核上运行,但 CalculiX 是我通过 os.system 命令运行的外部程序。 我需要在多个内核上运行模拟以节省时间。

    os.system("ccx WireBend")

这是我用来运行外部程序的东西,它可以工作,只是需要很多时间,因为计算只使用一个 cpu 完成。 那么如何在多个内核上运行 ccx 呢? 我正在使用 python 3.6

【问题讨论】:

  • 看来你应该在你试图运行的程序中处理多处理,而不是在这种情况下在 python 中。
  • 根据 CalculiX 的文档,它需要使用来自环境变量 OMP_NUM_THREADS 的内核数,所以尝试设置它。
  • 我已将 OMP_NUM_THREADS 设置为我的核心数量。当我独立运行 calculix 时,它使用所有内核,但如果我通过 python 运行它,它只使用一个
  • os.system("export OMP_NUM_THREADS=10 && ccx WireBend")
  • 我试过了,它给出了以下错误:'export' is not recognized as an internal or external command, operable program or batch file.

标签: python multicore os.system cpu-cores


【解决方案1】:

您可以将环境变量设置到运行程序的终端中,或在脚本中设置如下:

import os
os.environ['OMP_NUM_THREADS']
OR
os.environ['OMP_NUM_THREADS'] = '10'

然后运行

os.system("ccx WireBend")

【讨论】:

    【解决方案2】:

    使用subprocess.Popen,您可以异步打开一个子进程(即控制将在子进程完成之前返回给python)。

    多次使用它来产生多个子进程,然后检查每个进程是否已终止。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-05-08
      • 1970-01-01
      • 2019-05-12
      • 1970-01-01
      • 1970-01-01
      • 2011-08-03
      • 1970-01-01
      相关资源
      最近更新 更多