我使用的是OSGeo4W安装程序中包含的Python2.5.2发行版。这是一个运行在Windows7上的32位发行版。虽然PyQt在默认情况下不是由OSGeo4W安装程序安装的,但是我们已经将其安装到osgeo4wpython安装程序中,并且它一直工作得很好。PyQt4是4.8.6版,是针对32位版本的Python构建的。在
作为基于PyQt4的UI的一部分,我当前生成了一个QtCore.q进程()然后这样开始:
self.modelProcess = QtCore.QProcess()
command = './OSGeo4W/gdal_python_exec.bat'
argslist = 'QtCore.QString(uri, json.dumps(inputDict))
self.modelProcess.start(command, argslist)
其中,inputDict
是一个将Python字符串映射到任意值的Python字典,uri
是指向要运行的所需脚本的字符串URI。在
当这个过程运行时,用户会看到一个包含几个Qt小部件的窗口,包括一个“cancel”按钮。“取消”按钮的信号/插槽配置如下:
^{pr2}$然后在其他地方:
def closeWindow(self):
self.modelProcess.kill()
根据Qt documentation,这应该会终止进程(PyQt documentation同意这一点)。不幸的是,这并没有杀死QProcess。如果我有Windows任务管理器,我可以看到随着QProcess愉快地处理我的程序,我的CPU使用率继续上升。在
我读过elsewhere on SO,在Python2.5中,可以使用os.kill()
终止子进程,但是我的Python发行版没有包含kill
函数:
>>> import os
>>> os.kill
Traceback (most recent call last):
File "(stdin)", line 1, in (module)
AttributeError: 'module' object has no attribute 'kill'
在Python中有没有不同的方法来终止进程?也许是第三方模块?在
非常感谢。在
您可以这样做:
是跨平台的。 还有一个名为“psutil”的模块:
https://github.com/giampaolo/psutil
但您应该使用32位或64位版本分发应用程序。在
相关问题 更多 >
编程相关推荐