鱼C论坛

 找回密码
 立即注册
查看: 1271|回复: 9

[已解决]python 防止重复进程

[复制链接]
发表于 2020-7-28 21:17:20 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
求教大神,防止重复打开同一个程序

比如如下的代码,打包成exe文件

for i in range(100):
    print(i)

怎么可以做到打开一个程序了,再打开会自动退出,而不会重复执行。

我知道最简单的是每次打开创建一个标志文件,每次退出就删除,然后判断标志文件在就不运行,标志文件在就能运行
但是这样也不行,因为意外退出,比如电脑关机了,这个文件不会被删除,那么下次就会判定为标志文件存在,就不能运行。


因为自己基础不扎实,虽然网上看了很多,还是不确定,哪位大神能否帮忙写一个最简单的程序,需要有的功能就是任何情况下,打开一次就不会重复打开第二次。演示这个功能的代码。
万分感谢
最佳答案
2020-7-28 22:02:06
本帖最后由 1q23w31 于 2020-7-28 22:04 编辑
import socket
import sys
import time
try:
    s = socket.socket()
    host = socket.gethostname()
    s.bind((host,8888))
    for i in range(50):
        print(i)
        time.sleep(5)
except:
    print('shili')
    sys.exit()
可以改为监听端口,来实现单一运行,
就算意外关机,端口也会被释放,不会影响下一次使用
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-7-28 21:32:29 | 显示全部楼层
import os.path
if not os.path.isfile('a.a'):
    f = open('a.a', 'w')
else:
    exit()
for i in range(100):
    print(i)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-28 22:02:06 | 显示全部楼层    本楼为最佳答案   
本帖最后由 1q23w31 于 2020-7-28 22:04 编辑
import socket
import sys
import time
try:
    s = socket.socket()
    host = socket.gethostname()
    s.bind((host,8888))
    for i in range(50):
        print(i)
        time.sleep(5)
except:
    print('shili')
    sys.exit()
可以改为监听端口,来实现单一运行,
就算意外关机,端口也会被释放,不会影响下一次使用
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-28 22:11:35 | 显示全部楼层

这个不行啊,因为这个文件第一次出现了以后,以后就再也打不开程序了。
即使退出前加删除文件的代码也不行,因为可能出现意外关闭的状况,还是不会删除掉程序
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-28 22:16:08 | 显示全部楼层
1q23w31 发表于 2020-7-28 22:02
可以改为监听端口,来实现单一运行,
就算意外关机,端口也会被释放,不会影响下一次使用

亲测可用,非常感谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-28 22:16:23 | 显示全部楼层
huashengzi 发表于 2020-7-28 22:11
这个不行啊,因为这个文件第一次出现了以后,以后就再也打不开程序了。
即使退出前加删除文件的代码也不 ...

打不开程序是因为程序一执行完就退出了,在代码末尾加上一句 input() 就可以了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-28 22:27:51 From FishC Mobile | 显示全部楼层
追问,这个端口号有哪些?可以随便写么?比如绑定7654?
怎么确认不会和其他程序使用一样的端口号,比如另外一个别的程序也绑定了此端口,会发生什么?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-28 23:17:36 From FishC Mobile | 显示全部楼层
zltzlt 发表于 2020-7-28 21:32

追问,这个端口号有哪些?可以随便写么?比如绑定7654?
怎么确认不会和其他程序使用一样的端口号,比如另外一个别的程序也绑定了此端口,会发生什么?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-29 07:55:41 | 显示全部楼层
1q23w31 发表于 2020-7-28 22:02
可以改为监听端口,来实现单一运行,
就算意外关机,端口也会被释放,不会影响下一次使用


追问,这个端口号有哪些?可以随便写么?比如绑定7654?
怎么确认不会和其他程序使用一样的端口号,比如另外一个别的程序也绑定了此端口,会发生什么?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-29 07:59:24 | 显示全部楼层
huashengzi 发表于 2020-7-29 07:55
追问,这个端口号有哪些?可以随便写么?比如绑定7654?
怎么确认不会和其他程序使用一样的端口号,比 ...

看着用就行,冲突的话,程序无法运行,这么多端口,冲突几率很小
2020-7-29 7-58-38.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-19 17:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表