【发布时间】:2010-09-27 17:00:45
【问题描述】:
是否有一种 Pythonic 方式可以只运行一个程序的一个实例?
我想出的唯一合理的解决方案是尝试在某个端口上将其作为服务器运行,然后第二个程序尝试绑定到同一端口 - 失败。但这并不是一个好主意,也许还有比这更轻量级的东西?
(考虑到程序有时会失败,即段错误 - 所以像“锁定文件”这样的东西不会起作用)
【问题讨论】:
-
如果您追踪并修复了段错误,也许您的生活会更轻松。这并不是一件容易的事。
-
它不在我的库中,它在 python 的 libxml 绑定中并且非常害羞 - 几天只触发一次。
-
Python 的标准库支持flock(),这是现代UNIX 程序的正确选择。打开一个端口在一个更受限制的命名空间中使用一个点,而 pidfiles 更复杂,因为您需要检查正在运行的进程以安全地使它们无效;羊群都没有问题。
-
这也可以在 python 之外使用命令行实用程序flock进行管理。
标签: python process locking mutual-exclusion