Python中程序实例的队列?

时间:2017-08-16 13:50:52

标签: python linux multithreading queue locking

基本上,我想这样做,以便只能一次运行我的程序的一个实例。快速谷歌搜索找到 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写入/删除到日志文件,并检查它是否在日志中是下一个,但这看起来有点不合适。

1 个答案:

答案 0 :(得分:0)

我可以想象以下内容:

  

<强>伪代码

{{1}}