所以这是我的情况:我从python脚本调用.bat文件。我不确定它是否重要,但我使用python模块子进程运行该文件。即。
subprocess.call("dir/file.bat", shell=True)
.bat文件的创建取决于python脚本执行期间的用户输入,但通常它包含在cmd中运行的~30-40行命令。除了命令的输入和输出文件之外,所有这些代码行完全相同。例如:
start /wait metamap13 -Aq pradaxaText1.txt pradaxa1.out.txt
start /wait metamap13 -Aq pradaxaText2.txt pradaxa2.out.txt
start /wait metamap13 -Aq pradaxaText3.txt pradaxa3.out.txt
如果我同时调用metamap13 40次,我的计算机将崩溃,因为它是如此占用大量内存。如你所见,我试过了
start /wait
组合,以便第一行在第二行开始之前完成。不幸的是,当执行.bat文件时,它会打开一个新窗口,一旦程序运行完毕,窗口就不会关闭,因此在我手动关闭新的cmd窗口之前,第二行不会开始。通过此方法处理的大量数据意味着我无法始终关闭数百个新窗口。我也尝试了以下内容:
start /wait /B metamap13 -Aq pradaxaText1.txt pradaxa1.out.txt
我认为/ B可以解决不得不关闭窗口的问题,但它仍然会同时启动所有40行代码。我认为这与调用metamap13被认为是一个完整的命令并因此移动到下一行这一事实有关,即使metamap实际上仍在运行。所以我想到了两个可能的解决方案,我无法弄清楚如何实现:
任何想法都将不胜感激!
答案 0 :(得分:4)
此处还涉及metamap13
批处理文件中启动的流程,但请尝试以下步骤开始:
call metamap13 -Aq pradaxaText1.txt pradaxa1.out.txt
call metamap13 -Aq pradaxaText2.txt pradaxa2.out.txt
call metamap13 -Aq pradaxaText3.txt pradaxa3.out.txt