/
ilya.petrash
/
SimplePyScripts
Обзор
Документация
Войти
/
ilya.petrash
/
SimplePyScripts
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
single instance program/use_filelock.py
46 строк
988 B
gil9red
Updated.
01 июл 2024, 23:00
01 июл 2024, 23:00
983e201
Код
Авторство
О чём код?
#!/usr/bin/env python3 # -*- coding: utf-8 -*- __author__ = "ipetrash" import time import sys from pathlib import Path from typing import Callable # pip install filelock==3.15.4 from filelock import FileLock, Timeout def run_with_lock( file_name: Path, on_duplicated_text: str = "Detected launch of second application. Shutting down", sys_exit: int | None = 1, func: Callable = None, *func_args, **func_kwargs, ): if not func: raise ValueError("Argument func must be specified") file_name_lock = str(file_name) + ".lock" try: with FileLock(file_name_lock, timeout=0): func(*func_args, **func_kwargs) except Timeout: print(on_duplicated_text) if sys_exit is not None: sys.exit(sys_exit) if __name__ == "__main__": def main(): print("Start") time.sleep(20) print("Finish") file_name = Path(__file__).resolve() run_with_lock(file_name, func=main)