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

2024-09-28 05:26:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我是Python和多处理的新手。你知道吗

摘要问题:我正在运行一个.py可执行文件,其中包含池.map(函数,列表参数)它调用的函数包含操作系统(),它在与初始.py可执行文件相同的目录中执行.csh文件。这个.csh可执行文件创建一个新文件夹并将工作目录移到其中。我相信在我的代码失败的地方操作系统()不会等待.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 .....and so on

运行一些计算,只比较文件5k10\u中的值_原子.pdb.mtz和文件(另一个文件,例如“file-01”)。就是这个命令行凤凰网创建另一个文件夹(称为temp_dir)并将工作目录移到其中以进行一些计算和写出文件。你知道吗

同样,我很确定这是出了问题的地方,因为phenix命令除了创建一个名为temp\u dir的文件夹之外,从来没有做过任何事情。只有当phenix(一个.csh可执行文件)试图更改工作目录时操作系统()不等待任何返回,我的.py可执行文件继续执行下一个命令。你知道吗

他们是不是有办法让我的凤凰号可执行文件完成它的工作操作系统()不等待它完成?你知道吗

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


Tags: 文件pyimport目录文件夹可执行文件timeos

热门问题