Python:JobID计数器

时间:2010-07-12 03:56:17

标签: python

最好在python中创建一个作业ID计数器?例如,如果作业ID的值为“0”,并且每次有人运行该脚本,则计数器会上升一个?

E.G。

X = 0

Perform_some_process

x +=1

现在x的值将是1,但如果我再次运行脚本x将再次等于1而不是2。如果有人第二次运行脚本x等于2,怎么会这样?等等未来的运行。

1 个答案:

答案 0 :(得分:2)

你需要“坚持”反制最简单的方法是使用文件。例如:

import os

def onemore():
    f = __file__ + '.counter'
    if os.path.exists(f):
        with open(f) as thefile:
            counter = int(thefile.read())
    else:
        counter = -1
    counter += 1
    with open(f, 'w') as thefile:
        thefile.write(str(counter) + '\n')
    return counter

如果脚本的多个实例在同一时间开始,这可能会产生问题(缺少一些计数) - 如果这是一个问题请告诉我们(并告诉我们您需要处理哪些操作系统)了解有关如何在该关键文件上执行锁定的更多信息。

此解决方案还假定此Python(或字节码)文件所在的目录可由用户在其脚本运行的身份下写入。如果这是一个问题,脚本需要一些配置文件,指示哪个目录保证可由任何可能正在运行脚本的用户写入(并将使用该目录形成字符串f ,计数器文件的名称。)

请注意,我已经将计数器文件的内容保存为易于阅读的形式 - 这是为了便于调试(当文件中只有一个数字时,支付的价格很小)。当然可以将文件保留为二进制形式。

如果您的脚本需要保留许多信息,那么sqlite数据库文件可能是将它们保存在一起的最便捷方式。