有没有一种Python方式可以只运行一个程序实例?
我想出的唯一合理的解决方案是尝试将其作为服务器在某个端口上运行,然后尝试将第二个程序绑定到同一端口-失败。但这不是一个好主意,也许有比这更轻巧的东西了吗?
(考虑到程序有时可能会失败,例如segfault-因此“锁定文件”之类的东西将无法工作)
以下代码可以完成此工作,它是跨平台的,并且可以在Python 2.4-3.2上运行。我在Windows,OS X和Linux上进行了测试。
from tendo import singleton
me = singleton.SingleInstance() # will sys.exit(-1) if other instance is running
最新的代码版本位于singleton.py中。请在这里提交错误。
您可以使用以下方法之一安装tend:
easy_install tendo
pip install tendo
问题内容: 有没有一种Python方式可以只运行一个程序实例? 我想出的唯一合理的解决方案是尝试将其作为服务器在某个端口上运行,然后尝试将第二个程序绑定到同一端口-失败。但这不是一个好主意,也许有比这更轻巧的东西了吗? (考虑到程序有时可能会失败,例如segfault-因此“锁定文件”之类的东西将无法工作) 问题答案: 以下代码可以完成此工作,它是跨平台的,并且可以在Python 2.4-3.2上
问题内容: 我希望我的程序(Java可执行文件.jar)仅运行一次。我编写了一个程序,但现在我希望用户不能打开多个实例…。感谢您的时间… 我已经检查了服务器/客户端解决方案和锁定文件,但是我不太了解它们,我也试图使它们在NetBeans中运行,但是没有运气… 问题答案: 您可以使用套接字-ServerSocket只能侦听尚未使用的端口。第一次启动会在该端口上成功创建一个ServerSocket实例
问题内容: 我需要防止用户多次启动我的Java应用程序(WebStart Swing应用程序)。因此,如果应用程序已经在运行,则应该无法再次启动它或显示警告/再次关闭它。 有一些方便的方法可以做到这一点吗?我考虑过要阻止端口或将某物写入文件。但是希望您可以访问某些系统属性或JVM? 顺便说一句 目标平台是带有Java 1.5的Windows XP 问题答案: 我认为您的建议是在启动应用程序时打开端
问题内容: 如何强制一个表只有一行?下面是我尝试过的。该触发器可以工作,但是,触发绝对不会。对于CREATE,我想使用,但是SQLite不支持。 问题答案: 通常,要限制表中的行数,必须防止任何进一步的插入。在SQLite中,这是通过RAISE()完成的: 但是,如果限制为1,则可以简单地将主键约束为固定值:
问题内容: 我希望我的应用程序检查自身的另一个版本是否已在运行。 例如,启动后,用户单击以再次运行它,但是第二个实例意识到“哦,等等,已经在运行中”。并退出并显示一条消息。 问题答案: 您所寻找的内容可能最好用锁定文件来完成。锁定文件仅是指具有预定义位置且存在您的互斥体的文件。 测试程序启动时该文件是否存在,如果存在,请立即退出。在已知位置创建文件。如果程序正常退出,请删除锁定文件。 最好的办法是
如何从Anable剧本和处理程序运行单个任务,并在该任务成功完成时收到通知,同时跳过相关剧本中的所有其他任务? 目前,我执行以下操作: 然后在任务完成后按Ctrlc。但是,这也将跳过处理程序。 我知道我可以给任务添加一个标签并使用它,就像在ansible playbook中如何只运行一个任务?,但我更希望能够在不添加标签的情况下做到这一点。这可能吗?