Python 使用多处理发送/接收系统调用

Python 使用多处理发送/接收系统调用,python,multiprocessing,Python,Multiprocessing,我不熟悉Python多处理,但经常使用Python。我将python用于 脚本系统多次调用不同的程序(而不是shell脚本) 假设我有一个有64个处理器的计算集群,我需要运行一个os.system调用来多次调用外部程序,每次都很昂贵 有没有一种方法可以使用多处理来循环我的系统调用 假设我有以下循环: 我有一个合适的文件名列表 for i in filenames: ...code to setup new protein system.. os.syste

我不熟悉Python多处理,但经常使用Python。我将python用于
脚本系统多次调用不同的程序(而不是shell脚本)

假设我有一个有64个处理器的计算集群,我需要运行一个os.system调用来多次调用外部程序,每次都很昂贵

有没有一种方法可以使用多处理来循环我的系统调用

假设我有以下循环:

我有一个合适的文件名列表

for i in filenames:

         ...code to setup new protein system.. 
         os.system("$AMBERHOME/exe/sander -O -i min3.in -o min3.out -p test.prmtop -c test.inpcrd -r min3.rst -ref test.inpcrd")
基本上,我的代码脚本设置了一个蛋白质系统,然后在新系统上反复运行琥珀色程序。它以串行方式执行此操作,并且需要很多时间,因为如果有200个结构,那么在调用amber时,每个结构可能需要30分钟,因此总运行时间是30*200分钟

如果可能的话,我希望使用64个处理器——也许是我在Python中使用多处理器的一种方式(或者是对我可以尝试实现一种方式的引用),这样当我有64个处理器时,我就可以以某种方式通过上面的循环,这样一个单独的处理器分别用于64个独立的进程(os.system命令)每次执行一次,当每一次完成时,它会发送一些信号以继续循环下一个可用结构。可能是一个处理器以某种方式跟踪其他处理器的工作(通过os.system调用)


这是可以在集群上使用多处理在python中实现的吗?如果有人能提出一种方法或一个有用的参考来解决这个问题,我将不胜感激。谢谢!

您可能想看一看,我想我今天已经用多处理打印出了与这个问题相关的所有可能的内容处理/线程等。我认为这样做的最好方法是使用mpi4py。我花了很多时间才弄明白如何工作,但现在它工作了,我可以使用它来有效地分配任务。感谢指向pydra的指针!