【发布时间】:2011-08-22 09:09:20
【问题描述】:
我正在开发一个 UI,它有一个运行按钮来在命令提示符下运行某些测试。我尝试在这里实现线程来调用命令提示符并考虑监视线程。在运行测试之前(在命令提示符下),我希望禁用运行按钮,并且希望仅在命令提示符关闭时启用它。
我创建了一个 .bat 文件来在命令提示符下运行测试列表。
代码如下:
调用命令提示符的线程:
class RunMonitor(threading.Thread):
def run(self):
print 'Invoking the command prompt .....'
subprocess.call(["start", "/DC:\\Scripts", "scripts_to_execute.bat"], shell=True)
用于监控线程
def runscript(self):
print 'Complete_file_Path inside Run script is : ' , self.complete_file_path
file_operation.Generate_Bat_File(self.complete_file_path)
run_monitor_object = RunMonitor()
run_monitor_object.start()
while True:
if run_monitor_object.isAlive():
print 'The thread is still alive....'
else:
print 'The Thread is not alive anymore'
self.run_button.setEnabled(True)
break
从上面的例子中,只要我调用命令提示符,我就会运行一个 while 循环来监视状态,我希望只要调用命令提示符,线程就会处于活动状态,一旦我关闭它就会死命令提示符。但就我而言,应用程序只是挂起..
几个问题: 1.这是调用线程的正确方法吗? 2.这是监视线程状态的正确方法吗? 3.有没有更好的处理方法??
对此的任何帮助将不胜感激。
谢谢。
【问题讨论】:
-
你为什么同时使用单独的线程和单独的子进程?一个子进程通常足以运行与您的 GUI 不同的东西。为什么还要使用单独的线程?
-
我同意。但是我想监视子命令提示符,我怀疑它可以由子进程完成。正如我之前所说,我的 GUI 中有一个运行按钮,只有在命令提示符关闭时才能启用它。这可以不用线程实现吗?
-
@user596922:听起来您的问题应该是“如何监控单独的子进程的执行?”也许搜索“监控子流程”可能会有所帮助。 stackoverflow.com/questions/3869834/….
标签: python multithreading pyqt pyqt4