有没有一种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