python程序进程挂掉,该怎么处理

Python034

python程序进程挂掉,该怎么处理,第1张

1.可能还得看具体数据库操作是什么!有可能是内存溢出造成。建议先看看能否升级sqlite。

2.数据库链接没有被释放,或者内存溢出都有可能。最上个项目,竟然发现python内存溢出,把服务器的内存吃掉。可能是对象引用的问题。

希望能帮到你!

我正在尝试使用Python subprocess.Popen 来运行批处理文件,该文件执行 xfoil.exe 并为其提供一些参数 . 然后等待直到xfoil.exe退出 .

我已经使用以下代码作为批处理运行程序,它等待进程以超时退出 . 如果超时,该过程将被终止 .

def Bat_Runner(args, **kwargs):

"""

Batch runner

:param args:

:return:

"""

si = STARTUPINFO()

si.dwFlags |= STARTF_USESHOWWINDOW

process = Popen(args, stdin=PIPE, stdout=DEVNULL, bufsize=1, universal_newlines=True)

try:

process.wait(kwargs['timeout'])

except KeyError:

process.wait()

except TimeoutExpired:

process.kill()

raise TimeoutError

但是,有时 xfoil.exe 失败并挂起,在这种情况下批处理文件也会挂起,主程序卡在 process.wait(kwargs['timeout]) . 即使达到时间限制,批处理也不会被终止 . 在这种情况下,如果我通过双击"XXX.bat"手动运行批处理文件,控制台窗口也会挂起 .

这是什么原因?我对此有点疑惑,因为 Bat_Runner 函数已经过测试,在某些情况下可以很好地杀死这个过程,但不是这种情况 .

此外,如果 kill() 正在杀死批处理进程,有没有办法杀死它调用的 xfoil.exe 进程?

更新行======================= ========

PS:

1此代码将调用此Bat_Runner函数:

def _solve_by_Xfoil(self, alpha_set, Mach_number, Raynolds_number, parameter, is_viscus=True, **kwargs):

...many unre