[英]Python: Submitting different jobs to different CPUs
我有一个执行某些功能的fortran atoms.out
文件。 我正在使用以下命令从python中调用该fortran文件:
values = subprocess.Popen(["./atoms.out", "./%s.klj" % test1, "./%s.out" % test1], stdout = subprocess.PIPE)
我看过Python PP ,但是我不认为这是我想要的,因为它单次使用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文件为止。
使用multiprocessing.pool.ThreadPool
类创建一个线程池,该线程池由四个线程组成(在您的情况下)。 提交subprocess.Popen
任务使用例如游泳池pool.map
。 然后,Python中的四个线程将各自产生一个Fortran进程。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.