python 如何做到同时只运行一个程序

qq_38741240 2017-10-26 10:09:22
比如我在linux上写的每隔3秒钟运行一个python脚本文件,但是如果前一个python脚本文件在3秒内没有运行结束,那么3秒后的定时执行脚本在发现后就不要再次运行了(最好在python里面判断之前的脚本是否正在运行,不通过linux脚本判断,如何在python运行时做个标记呢,下次在运行时判断这个标记,我的想法是在内存里做变量个标记,但是两次运行的python是两个独立的程序,好像这样实现不通,同时请考虑大并发时,程序安全性问题,类似于java中的多线程锁)
...全文
1630 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
cnaaa8 2018-01-04
  • 打赏
  • 举报
回复
lock判断
oreoconansisu 2017-10-31
  • 打赏
  • 举报
回复
使用apscheduler包,我用的是2.1.0版本,2.1.2之后的版本会有区别 大致代码: 每3秒执行1次,最多只有1个任务在跑 from apscheduler.scheduler import Scheduler def run(): pass scheduler = Scheduler(standalone=True) scheduler.add_interval_job(run, seconds=3, max_instances=1)
qq_38741240 2017-10-30
  • 打赏
  • 举报
回复
引用 2 楼 oyljerry 的回复:
可以用一个lock文件来判断,启动的时候判断,有就退出,没有就创建,py脚本结束的时候,删除
我觉得这样不是很靠谱,假如是极端情况,每隔10毫秒执行一次,上次的任务正在创建的lock(还没创建完成),这时候下一个线程又运行了,这个时候在判断文件是否存在的时候会误判断文件没有创建,这样还是会造成多个任务
云中不知人 2017-10-30
  • 打赏
  • 举报
回复
我们在跑程序的时候,会有一个文件存放着这个程序的pid。启动时会去找这个文件用来判断进程是否在运行
加盾男爵 2017-10-26
  • 打赏
  • 举报
回复
再写一个python程序,在这个程序里执行你的python程序,这样就可以设置执行时间了,
oyljerry 2017-10-26
  • 打赏
  • 举报
回复
可以用一个lock文件来判断,启动的时候判断,有就退出,没有就创建,py脚本结束的时候,删除

37,719

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧