- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我正在使用一个商业应用程序,它使用 Python 作为其脚本 API 的一部分。提供的功能之一是名为 App.run()
的功能。调用此函数时,它会启动一个新的 Java 进程来完成其余的执行。 (不幸的是,我真的不知道它在做什么,因为提供的 Python 模块是 .pyc
文件,并且许多 Python 函数都是 SWIG 生成的)。
我遇到的问题是我正在将 App.run()
调用构建到一个更大的 Python 应用程序中,该应用程序需要执行一些有保证的清理代码(关闭数据库等) .不幸的是,如果子进程被 Ctrl+C 中断,它会中止并返回到命令行,而不会将控制权返回给主 Python 程序。因此,我的清理代码永远不会执行。
到目前为止我已经尝试过:
__del__
的析构函数中...不起作用。 (App.run()
在类内)App.run()
放入一个线程...在 Ctrl+CApp.run()
放入进程中(来自多处理)...不起作用知道会发生什么吗?
最佳答案
这只是一个大纲 - 但像这样的东西?
import os
cpid = os.fork()
if not cpid:
# change stdio handles etc
os.setsid() # Probably not needed
App.run()
os._exit(0)
os.waitpid(cpid)
# clean up here
(os.fork 仅适用于 *nix)
同样的想法可以通过 subprocess
以操作系统不可知的方式实现。思路是在子进程中运行App.run()
,然后等待子进程退出;不 pipe 进程是如何死亡的。在 posix 上,您还可以捕获 SIGCHLD(子进程死亡)。我不是 Windows 大师,所以如果适用并且 subprocess
不起作用,其他人将不得不在这里插话。
App.run()
被调用后,我很好奇进程树是什么样子的。它有可能运行 exec
并接管 python 进程空间。如果发生这种情况,创建子进程是我能想到的捕获它的唯一方法。
关于Python 失去对子进程的控制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12940628/
我想添加子类别并在列表上使用react,但是当我单击子类别时,我有两个事件:第一个在子类别上,第二个在父类别上。 我怎样才能只有子类别? 这是我的实际代码: getList(myList){
我有一个问题。我有 1:N 关系(用户:任务)。我需要查询所有用户的列表,其中每个用户都有其任务列表 - 按日期(指定属性)排序。 最佳答案 获取用户 RealmResults users = rea
考虑以下代码片段: OPTIONS Email 每当我将鼠标悬停在 上时,
我正在与 PF4J(Plugin Framework for Java) 的开发者合作为 Wicket 提供更好的插件功能。已经有一个 pf4j-spring 和一个 pf4j-wicket 项目来提
我有一个带有 SVG 子元素的父元素(SVG 是一个简单的立方体)。父级的 CSS 不透明度 = 0.45。在 Android/Webview 上显示不透明度值在渲染时应用于各个 SVG 多边形,导致
我试图放置一个标签,使标签的顶部位于 UIViewController 下方的 2/3 处。所以我写了这个约束,但它给了我下面的错误。 NSLayoutConstraint *labelTopCons
我是一名优秀的程序员,十分优秀!