假设我在脚本运行时迭代地使用Python调用不同的bash命令。我如何进行线程化(或睡眠)以使我的Python脚本不会停止并停止? 我尝试使用:
threading.Timer(5.0, self.func).start()
但也许是因为我的shell命令很复杂,Python脚本/应用程序停滞不前。
示例:
def func(self, command):
cmd = subprocess.Popen(command, stdout=subprocess.PIPE, shell=True)
output, eff = cmd.communicate()
return output
def __init__(self, parent=None):
threading.Timer(5.0, self.func).start()
command = "ifconfig"
print self.func(command)
P.S。但我不打电话给“ifconfig”这只是一个例子
答案 0 :(得分:0)
您正在拨打func
两次。在最后一行,你在你所站的同一个线程上调用它。这将在func
返回之前阻止。
答案 1 :(得分:0)
创建计时器时,不要将command
作为参数发送到您的函数。我根据您的代码制作了一个工作示例,以下是如何运行带参数的计时器。正如@ felipe-lema所说,你正在调用函数两次,但我没有在代码中更改它,尽管我不明白原因。
threading.Timer(interval,function,args = [],kwargs = {})
#!/usr/bin/python2.7
import sys
import threading
import subprocess
class TestClass(object):
def __init__(self, parent=None):
command = "ifconfig"
threading.Timer(5.0, self.func, (command,),).start()
print self.func(command)
def func(self, command):
cmd = subprocess.Popen(command, stdout=subprocess.PIPE, shell=True)
output, eff = cmd.communicate()
sys.stdout.write("In Thread "+threading.current_thread().name+"\n")
sys.stdout.write(output)
return output
TestClass()