Python: JobID计数器
在Python中,怎么才能做一个工作ID计数器呢?比如说,如果工作ID一开始是“0”,每次有人运行这个脚本,计数就加一。
举个例子:
X = 0
Perform_some_process
x +=1
现在x的值是1,但如果我再运行一次脚本,x的值又会变成1,而不是2。那我该怎么做才能让每次运行脚本时,x的值都能加一,比如第二次运行时x等于2,以此类推呢?
1 个回答
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
数据库文件可能是最方便的方式来把它们都放在一起。