Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用python将bash命令发送到命令行,并在不等待bash命令执行的情况下执行下一个命令?_Python_Bash_Cluster Computing_Core_Supercomputers - Fatal编程技术网

如何使用python将bash命令发送到命令行,并在不等待bash命令执行的情况下执行下一个命令?

如何使用python将bash命令发送到命令行,并在不等待bash命令执行的情况下执行下一个命令?,python,bash,cluster-computing,core,supercomputers,Python,Bash,Cluster Computing,Core,Supercomputers,我想在超级计算机节点的3个独立核心处理器上执行3个独立的bash命令。 我有一个python脚本,它通过os.system将bash命令发送到命令行,但是它似乎在进入python脚本的下一行之前执行bash命令直到完成。我只想将bash命令一个接一个地发送到命令行 for i in range(0, len(core), 8) : os.system("bpsh "+str(1)+" nohup python /home/tree_df_unchuncked.py "+str(

我想在超级计算机节点的3个独立核心处理器上执行3个独立的bash命令。 我有一个python脚本,它通过os.system将bash命令发送到命令行,但是它似乎在进入python脚本的下一行之前执行bash命令直到完成。我只想将bash命令一个接一个地发送到命令行

 for i in range(0, len(core), 8) :
        os.system("bpsh "+str(1)+" nohup python /home/tree_df_unchuncked.py "+str(' '.join(core[i]))+" 0.01"+" y")
        os.system("bpsh "+str(1)+" nohup python /home/tree_df_unchuncked.py "+str(' '.join(core[i+1]))+" 0.01"+" y")
        os.system("bpsh "+str(1)+" nohup python /home/tree_df_unchuncked.py "+str(' '.join(core[i+2]))+" 0.01"+" y")

考虑从python程序构建一个shell脚本文件,然后执行该shell脚本。在构建shell脚本时,在每行末尾放置一个&。将wait命令放在程序末尾也很有用,这样shell脚本将暂停,直到所有后台命令(并行运行)完成

#/bin/bash
a &
b &
c &
wait

如果你的代码已经格式化,我可以给你一个更具体的答案,这样我就可以复制粘贴它,然后执行它。

考虑从你的python程序构建一个shell脚本文件,然后执行该shell脚本。在构建shell脚本时,在每行末尾放置一个&。将wait命令放在程序末尾也很有用,这样shell脚本将暂停,直到所有后台命令(并行运行)完成

#/bin/bash
a &
b &
c &
wait
如果您的代码已经格式化,我可以给您一个更具体的答案,这样我就可以复制并粘贴它,然后执行它。

是正确的,但只是为了解释发生了什么:您的代码没有做任何事情来并行运行命令。方法包括但不限于:

  • 就像@Mark的解决方案一样
  • make-j
  • 巨蟒或
  • GNU平行线
    • 是正确的,但只是为了解释发生了什么:您的代码没有做任何事情来并行运行命令。方法包括但不限于:

      • 就像@Mark的解决方案一样
      • make-j
      • 巨蟒或
      • GNU平行线