写了个脚本,数据需要定时循环处理,但是不能同时重复处理。也就是说,脚本需要单进程运行。脚本定时运行配置在crontab中。如果在脚本开始写状态文件,运行完成后关闭状态文件也可以,但是如果脚本中途退出,状态文件不会更改,下次运行就不容易判断了。使用进程号来判断就比较准确了,所以写了以下代码。
以下脚本为linux下使用。
#!/usr/local/bin/python # ------------------------------------------------------------------------------- # Filename: my-pid.py # Revision: # Date: 2012-12-19 # Author: simonzhang # Email: simon-zzm@163.com # ------------------------------------------------------------------------------- import os if __name__ == '__main__': try : #首先查看是否有pid文件 #读取pid now_pid = open("./my_pid.pid","rb").read() #通过操作系统命令,统计pid运行的数量 get_count = os.popen("ps -ef|awk ' ''{print $2}'|grep -w %s|wc -l"%now_pid).read() except: #如果没有pid文件,则统计为零 get_count = 0 #判断pid是否在进程中 if int(get_count) > 0 : #如果系统进程中有pid进程,则打印后推出 print "run...." sys.exit() else: #如果没有进程则获得后,保存在pid文件中 w_pid = os.getpid() w_pid_file = open("./my_pid.pid","wb") w_pid_file.write("%s"%w_pid) w_pid_file.close() #运行脚本 main()