Python:向不同的CPU提交不同的作业

Python:向不同的CPU提交不同的作业,python,Python,我有一个fortranatoms.out文件,它执行一些功能。我从python中调用该fortran文件时使用: values = subprocess.Popen(["./atoms.out", "./%s.klj" % test1, "./%s.out" % test1], stdout = subprocess.PIPE) 我已经看过了,但我不认为这是我要找的,因为它使用n个CPU来完成一项工作 fortran文件执行的计算不是独立的,不能与python pp 因此,我的问题是如何将大量

我有一个fortran
atoms.out
文件,它执行一些功能。我从python中调用该fortran文件时使用:

values = subprocess.Popen(["./atoms.out", "./%s.klj" % test1, "./%s.out" % test1], stdout = subprocess.PIPE)
我已经看过了,但我不认为这是我要找的,因为它使用n个CPU来完成一项工作

fortran文件执行的计算不是独立的,不能与
python pp

因此,我的问题是如何将大量作业提交给多个不同的CPU,例如,我有:7个文件,希望在4个CPU上运行

因此,每个作业分配为:

File1 -> CPU1
File2 -> CPU2
File3 -> CPU3
File4 -> CPU4
然后,当一个作业在CPU上完成时,它将替换为要运行的其余3个文件。假设
File1
CPU1
上完成,它将被
File5
替换,因此作业的分布如下所示:

File5 -> CPU1
File2 -> CPU2
File3 -> CPU3
File4 -> CPU4

依此类推,直到它在7个文件上运行完fortran文件。

使用
多处理.pool.ThreadPool
类创建一个线程池,该线程池由(在您的情况下)四个线程组成。使用例如
pool.map
子流程.Popen
任务提交到池中。然后,Python中的四个线程将各自生成一个Fortran进程。

使用
多处理.pool.ThreadPool
类创建一个由四个线程组成的线程池(在您的示例中)。使用例如
pool.map
子流程.Popen
任务提交到池中。然后,Python中的四个线程将各自生成一个Fortran进程。

是否检查了Python的多处理模块?是否检查了Python的多处理模块?+1请注意,
multiprocessing.pool.ThreadPool
将默认创建与CPU核心计数相同数量的进程,这是一个很好的默认值。+1请注意,
multiprocessing.pool.ThreadPool
将默认创建与CPU核心计数相同数量的进程,这是一个很好的默认值。