基本上,我想这样做,以便只能一次运行我的程序的一个实例。快速谷歌搜索找到 this solution ,以防止两个程序实例运行,我在下面调整,等到上一个实例完成后再运行。
import fcntl, sys
pid_file = 'program.pid'
fp = open(pid_file, 'w')
while True:
try:
fcntl.lockf(fp, fcntl.LOCK_EX | fcntl.LOCK_NB)
except IOError:
# another instance is running
continue
break
但是,这并不是真正尊重程序被调用的时间。
例如,假设我在10:00运行此程序并持续5分钟。然后,说我在10:01和10:02再次运行这个程序。无法保证在10:01运行的实例将是第一个执行的实例。
我想按时间创建一个运行队列,第一次调用程序就是下一个运行的程序。有一个简单的解决方案吗?我可以想象每个程序在启动/完成时将其进程ID写入/删除到日志文件,并检查它是否在日志中是下一个,但这看起来有点不合适。
答案 0 :(得分:0)
我可以想象以下内容:
<强>伪代码强>
{{1}}