[英]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.