gpt4 book ai didi

python - 有没有办法防止两个 Python 程序同时执行同一个二进制文件?

转载 作者:太空狗 更新时间:2023-10-29 21:05:36 24 4
gpt4 key购买 nike

我有两个 Python 脚本,它们都需要定期(想想 cronjobs)来调用外部程序。

如果这个程序(我们无法控制)被同时调用两次,就会发生数据错误,所以我们需要有一种方法来同步对这个二进制文件的调用。

有没有办法做到这一点,最好只使用 Python 标准库?

最佳答案

因此无需使用第 3 方库,例如 filelock你必须做这样的事情:

import os
from subprocess import check_call

if os.path.exists("/var/run/foo.ock"):
print("Backing off...")
raise SystemExit(1)

try:
with open("/var/run/foo.lock", "w"):
check_call("/path/to/binary")
finally:
os.remove("/var/run/foo.lock")

更好的方法是使用 filelock (如果您可以安装第 3 方库):

from filelock import FileLock

with FileLock("/path/to/binary"):
check_call("/path/to/binary")

您可以轻松安装filelock使用 pip :

$ pip install filelock

另见相关:Locking a file in Python

注意:似乎还有一个非常相似的包名为lockfile ! (不要混淆两者!)

关于python - 有没有办法防止两个 Python 程序同时执行同一个二进制文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30912611/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com