So without using a 3rd-party library such as filelock you'll have to do something like this:
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")
The better approach is to use filelock (if you can install 3rd party libraries):
from filelock import FileLock
with FileLock("/path/to/binary"):
check_call("/path/to/binary")
You can easily install filelock using pip:
$ pip install filelock
See also related: Locking a file in Python
Note: There also seems to be a very similarly named package called lockfile! (Don't confuse the two!)