Python3脚本单进程实例实现
一、说明 一方面,前边写了“ Linux shell脚本单实例模式实现 ”,python也是日常需要使用的,所以也想来看python中如何实现。 另一方面,shell中没有类和实例的概念,所以我以为“单进程实例”和设计模式中的“单例模式”是一个意思,但实际来看还是有些差别的。 “单进程实例”要求的是在整个内存中,一个文件只有一个进程实例。“单例模式”能保证的是类只有一个实例,一是说他可能被同进程其他代码在多处调用、实例化然而他总是返回那一个实例,二是即便只有他一个文件一个类我们仍可以多次运行而效果只是一个进程中只有该类的一个实例。 或者用协议的级别进行类比,“单进程实例”和”单例模式“他们所处的层级是不一样的,“单进程实例”是整个内存级,“单例模式”是整个进程级。 二、Linux平台实现--使用标准库fcntl linux平台可以通过python标准库fcntl来实现锁 import os import time import fcntl class Test(): # 此函数用于获取锁 def _get_lock(self): file_name = os.path.basename(__file__) # 为了统一按linux的习惯放到/var/run目录去 lock_file_name = f"/var/run/{file_name}.pid" #