如何跳过子进程直到完成为止

时间:2014-11-18 22:42:21

标签: python python-3.x

我的程序循环遍历此子进程,返回服务器延迟。

startupinfo = subprocess.STARTUPINFO()
startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW
latency = subprocess.Popen(["ping.exe", "141.101.115.212"], 
                           stdout=subprocess.PIPE, 
                           startupinfo=startupinfo)
latency = str(x.communicate()[0])

问题是程序将在循环中间暂停以允许子进程完成。有没有办法跳过这个子进程,直到它完成,所以我可以继续循环?

修改

我不能等待子进程完成的原因是因为我需要能够单击并拖动窗口显示延迟。如果子流程没有finshed,窗口将不会移动。这会产生滞后效应。

class WindowDraggable():

    def __init__(self, label):
        self.label = label
        label.bind('<ButtonPress-1>', self.StartMove)
        label.bind('<ButtonRelease-1>', self.StopMove)
        label.bind('<B1-Motion>', self.OnMotion)

    def StartMove(self, event):
        self.x = event.x
        self.y = event.y

    def StopMove(self, event):
        self.x = None
        self.y = None

    def OnMotion(self, event):
        x = (event.x_root - self.x - self.label.winfo_rootx() + self.label.winfo_rootx())
        y = (event.y_root - self.y - self.label.winfo_rooty() + self.label.winfo_rooty())
        root.geometry("+%s+%s" % (x, y))

1 个答案:

答案 0 :(得分:0)

latency绑定到subprocess命令和转换后的输出。虽然它是subprocess命令,但您可以使用:

latency.poll()

检查它是否已经完成。有关详细信息,请check the docs