对for循环中的python子进程感到困惑

2024-06-16 12:44:42 发布

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

我正在尝试使用python自动化一些大数据文件处理。在

处理的lop是链接的,即script1编写一个文件,然后由script2处理,然后由script3输出script2等

我在线程上下文中使用subprocess模块。在

我有一个类创建链接脚本的元组 (“scr1.sh”,“scr2.sh”,“scr3.sh”)。在

然后是另一个使用调用的类

for script in scriplist:
    subprocess.call(script)

我的问题是,在这个for循环中,每个脚本只在subprocess.call(script1)返回成功的retcode?。在

或者是因为我在用的时候,这三个都被一个接一个的打电话subprocess.call,不使用“sleep”或“wait”,我希望确保第二个脚本只在第一个脚本结束后才开始。在

编辑:pydoc说 "subprocess.call(*popenargs,**kwargs) 使用参数运行命令。等待命令完成,然后返回returncode属性。“

所以在for循环(上面)中,它是否在迭代到下一个脚本之前等待每个retcode。在

我不熟悉穿线。我在这里附加了运行分析的类的精简代码。这个subprocess.call循环是此类的一部分。在

^{pr2}$

Tags: 文件命令脚本for链接数据文件shscript
1条回答
网友
1楼 · 发布于 2024-06-16 12:44:42

循环将串行调用每个脚本,直到脚本完成,然后调用下一个脚本,而不管前一个调用的成功与否。你可能想说:

try:
  map(subprocess.check_call, script_list)
except Exception, e:
  # failed script

一个新线程将从每次调用run开始,并在run完成时结束。在一个线程中使用子进程迭代脚本。在

您应该确保每个线程中的每组调用不会影响来自其他线程的其他调用。例如,尝试同时在多个线程中从脚本调用读取和写入同一个文件。在

相关问题 更多 >