当前位置: 首页 > 编程笔记 >

Python实现保证只能运行一个脚本实例

易宣
2023-03-14
本文向大家介绍Python实现保证只能运行一个脚本实例,包括了Python实现保证只能运行一个脚本实例的使用技巧和注意事项,需要的朋友参考一下

保证只能运行一个脚本实例,方法是程序运行时监听一个特定端口,如果失败则说明已经有实例在跑。

使用装饰器实现,便于重用


import functools

def just_one_instance(func):

'''


装饰器

如果已经有实例在跑则退出


:return:

'''     @functools.wraps(func)     def f(*args,**kwargs):         import socket         try: # 全局属性,否则变量会在方法退出后被销毁             global s             s = socket.socket()             host = socket.gethostname()             s.bind((host, 60123))         except:             print('already has an instance')             return None         return func(*args,**kwargs)     return f [code] 在脚本的主函数上使用: [code] @just_one_instance main():     do sth.

 类似资料:
  • 问题内容: 有没有一种Python方式可以只运行一个程序实例? 我想出的唯一合理的解决方案是尝试将其作为服务器在某个端口上运行,然后尝试将第二个程序绑定到同一端口-失败。但这不是一个好主意,也许有比这更轻巧的东西了吗? (考虑到程序有时可能会失败,例如segfault-因此“锁定文件”之类的东西将无法工作) 问题答案: 以下代码可以完成此工作,它是跨平台的,并且可以在Python 2.4-3.2上

  • 问题内容: 有没有一种Python方式可以只运行一个程序实例? 我想出的唯一合理的解决方案是尝试将其作为服务器在某个端口上运行,然后尝试将第二个程序绑定到同一端口-失败。但这不是一个好主意,也许有比这更轻巧的东西了吗? (考虑到程序有时可能会失败,例如segfault-因此“锁定文件”之类的东西将无法工作) 问题答案: 以下代码可以完成此工作,它是跨平台的,并且可以在Python 2.4-3.2上

  • 问题内容: 我正在尝试创建86个task.py实例以同时运行。 问题答案: 等待命令完成。改为使用:

  • 问题内容: 确保给定脚本仅一个实例正在运行的最简单/最佳方法是什么(假设它是Linux上的Bash)? 目前,我正在做: 但是它有几个问题: 它把检查放在脚本之外 它不允许我从单独的帐户运行相同的脚本-有时我想这样做。 仅检查进程名称的前14个字符 当然,我可以编写自己的pidfile处理程序,但我认为应该有一种简单的方法。 问题答案: 如果所有用户的脚本都相同,则可以使用一种方法。如果您获得了锁

  • 本文向大家介绍Python实现从脚本里运行scrapy的方法,包括了Python实现从脚本里运行scrapy的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Python实现从脚本里运行scrapy的方法。分享给大家供大家参考。具体如下: 希望本文所述对大家的Python程序设计有所帮助。

  • 问题内容: 我希望我的程序(Java可执行文件.jar)仅运行一次。我编写了一个程序,但现在我希望用户不能打开多个实例…。感谢您的时间… 我已经检查了服务器/客户端解决方案和锁定文件,但是我不太了解它们,我也试图使它们在NetBeans中运行,但是没有运气… 问题答案: 您可以使用套接字-ServerSocket只能侦听尚未使用的端口。第一次启动会在该端口上成功创建一个ServerSocket实例

  • 问题内容: 我想从另一个Python脚本运行一个Python脚本。我想像使用命令行一样传递变量。 例如,我会跑我的,将通过值(0,1,2,3)的列表迭代第一个脚本,并通过那些到第二脚本,然后,等 我发现了Stack Overflow问题1186789,这是一个类似的问题,但是ars的答案调用了一个函数,在这里我想运行整个脚本,而不仅仅是函数,而balpha的答案则调用了脚本,但没有参数。我将其更改

  • 所以我有主python脚本,我想从我的主文件中调用另一个python脚本,但是,每当我这样做的时候,我调用的脚本就会超过原来的脚本控制台中的主脚本?