在Python中执行多处理时,外部可执行文件会更改目录

在Python中执行多处理时,外部可执行文件会更改目录,python,multiprocessing,python-multiprocessing,pool,os.system,Python,Multiprocessing,Python Multiprocessing,Pool,Os.system,我不熟悉Python和多处理 总结问题:我正在运行一个.py可执行文件,它包含一个Pool.map(函数,list_args),它调用的函数包含一行os.system(),它在与初始.py可执行文件相同的目录中执行一个.csh文件。此.csh可执行文件创建一个新文件夹,并将工作目录移动到其中。我相信当我的代码失败时,os.system()不会等待.csh可执行文件完成 (Ubuntu是我电脑上的操作系统) 以下是代码的一部分: import sys import os import multip

我不熟悉Python和多处理

总结问题:我正在运行一个.py可执行文件,它包含一个Pool.map(函数,list_args),它调用的函数包含一行os.system(),它在与初始.py可执行文件相同的目录中执行一个.csh文件。此.csh可执行文件创建一个新文件夹,并将工作目录移动到其中。我相信当我的代码失败时,os.system()不会等待.csh可执行文件完成

(Ubuntu是我电脑上的操作系统)

以下是代码的一部分:

import sys
import os
import multiprocessing as mp
import time

def phenix(FILES):
        os.system("mkdir temp_"+str(FILES))
        time.sleep(1)
        os.system("cp 5k10_only_atoms.pdb.mtz "+str(FILES)+" temp_"+str(FILES)+"/")
        retval = os.getcwd()
        time.sleep(1)
        os.chdir(str(retval)+"/temp_"+str(FILES))
        time.sleep(1)
        os.system("./phenix.get_cc_mtz_pdb 5k10_only_atoms.pdb.mtz "+str(FILES)+" scale=True fix_xyz=True >> grabado")
        os.chdir(retval)

        #THE USER INPUTS VALUES FOR THE VARIABLES cores AND list_files

if __name__ == '__main__':
                    p = mp.Pool(cores)
                    p.map(phenix,list_files)
命令行

./phenix.get_cc_mtz_pdb 5k10_only_atoms.pdb.mtz…等等

运行一些计算,比较文件5k10_only_atoms.pdb.mtz和文件(另一个文件,例如“file-01”)中的值。正是这个命令行phenix.get_cc_mtz_pdb创建了另一个文件夹(称为temp_dir),并将工作目录移动到其中以进行一些计算和写出文件

同样,我很确定这是出问题的地方,因为phenix命令除了创建一个名为temp_dir的文件夹外,什么都不做。只有当phenix(一个.csh可执行文件)试图更改工作目录时,os.system()才不会等待任何返回,my.py可执行文件继续执行下一个命令

他们是否有办法让我的phenix可执行文件在不等待os.system()完成的情况下完成其工作


注意:我无法修改此phenix(.csh)可执行文件。另外,当我直接在终端上运行phenix命令行时,它也可以工作。

首先,我在这里的任何地方都看不到
.csh
。其次,您是否希望
.csh
脚本更改Python进程的工作目录?它不能这样做。phenix.get_cc_mtz_pdb是我的.csh可执行文件(尽管它没有扩展名)。phenix.get_cc_mtz_pdb是我的.csh可执行文件(尽管它没有扩展名,我相信它是一个.csh)。问题是当我运行os.system(“phenix.get_cc_mtz_pdb…”)而不进行多处理时,可执行文件会运行并完成其工作。但是,当我在执行多处理时运行os.system(“phenix.get_cc_mtz_pdb…”)时,它不会做任何事情。你有没有读过书,读过书?