Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/334.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时间函数_Python_Subprocess - Fatal编程技术网

Python时间函数

Python时间函数,python,subprocess,Python,Subprocess,我的代码如下所示: import subprocess def run_command(command): p = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) while p.poll() is None

我的代码如下所示:

import subprocess

def run_command(command):
        p = subprocess.Popen(command, shell=True,
                                stdout=subprocess.PIPE,
                                stderr=subprocess.STDOUT)

        while p.poll() is None:
                print "Loading mWorker... please wait"
                time.sleep(2)

        return p.communicate()
我最初认为p.communicate()应该在while语句之前。但是,我发现如果这个函数调用没有放在方法的末尾,它将挂起(例如,我没有看到任何超出返回提示的内容)。如果我像上面所示运行这个方法,我只会得到一个print语句,然后

    Traceback (most recent call last):
  File "<stdin>", line 1, in ?
  File "python.py", line 10, in run_command
    time.sleep(2)
NameError: global name 'time' is not defined
回溯(最近一次呼叫最后一次):
文件“”,第1行,是否在中?
文件“python.py”,第10行,在run_命令中
时间。睡眠(2)
NameError:未定义全局名称“时间”

为什么我会看到这个?为什么时间不能工作不止一次?我需要做哪些更改才能继续查看打印语句?

您没有导入时间模块。

因为您没有导入时间模块:

import subprocess
import time
...
#rest of your code
编辑:

您曾经看到打印
“Loading mWorker…please wait”
消息并不意味着它正在工作。Python将执行命令,在这种情况下,它知道如何打印,但是
time
未定义,因此它将打印,然后在
时间停止。sleep(2)


你可以向自己证明这一点,把这两种说法颠倒过来,你就再也看不到印刷品了。

时间一次也不起作用。。。你打印这些东西,然后用
time.sleep
,但是python不知道
time
是什么,因为你从来没有导入过它。好吧,这很有意义,mglison。非常感谢。该代码在
导入时间
时中断。在时放下
<代码>p.通信()
跟着就够了。