Python程序互斥体

  有时候我们需要程序只运行一个实例,在windows平台下我们可以很简单的用mutex实现这个目的。

  在开始时,程序创建了一个命名的mutex,这个mutex可以被其他进程检测到。 这样如果程序已经启动,再次运行时的进程就可以检测到程序已运行,从而不会继续运行。

from tkinter import *
import win32event, pywintypes, win32api
from winerror import ERROR_ALREADY_EXISTS
class MyFrm(Frame):
def __init__(self, master):
self.root=master
self.screen_width = self.root.winfo_screenwidth()#获得屏幕宽度
self.screen_height = self.root.winfo_screenheight() #获得屏幕高度
#self.root.resizable(False, False)#让高宽都固定
self.root.update_idletasks()#刷新GUI
self.root.withdraw() #暂时不显示窗口来移动位置
self.root.geometry('%dx%d+%d+%d' % (self.root.winfo_width(), self.root.winfo_height() ,(self.screen_width - self.root.winfo_width()) / 2,(self.screen_height - self.root.winfo_height()) / 2)) # center window on desktop
self.root.deiconify()
Label(self.root,text='程序运行中...').pack(fill=BOTH,expand=YES) if __name__=='__main__':
mutexname = "DEMO"#互斥体命名
mutex = win32event.CreateMutex(None, FALSE, mutexname)
if (win32api.GetLastError() == ERROR_ALREADY_EXISTS):
print('程序已启动')
exit(0)
root=Tk()
MyFrm(root)
root.mainloop()

最新文章

  1. Wrong list
  2. es6 数组的工具类
  3. JVM配置
  4. PHP curl超时问题
  5. VS2012 asp.net mvc 4 运行项目提示:"错误消息 401.2。: 未经授权: 服务器配置导致登录失败"
  6. junit加载
  7. dubbo源码之四——服务发布二
  8. 02-自定义CALayer
  9. [shell基础]——find命令
  10. java 泛型类
  11. Can deep learning help you find the perfect girl?
  12. RPATH与RUNPATH
  13. c++ builder 2009如何生成独立运行exe(转)
  14. Hive thrift服务(将Hive作为一个服务器,其他机器可以作为客户端进行访问)
  15. as版本切换导致项目损坏,无法启动。环境依赖混乱
  16. [Swift]LeetCode540. 有序数组中的单一元素 | Single Element in a Sorted Array
  17. UESTC 1034 AC Milan VS Juventus 分情况讨论
  18. 2018铁三测评题write以及一些想送给你们的话
  19. luogu P4688 [Ynoi2016]掉进兔子洞 bitset 莫队
  20. 《剑指offer》第四十三题(从1到n整数中1出现的次数)

热门文章

  1. linux do{} while(0)
  2. 项目三(2)——person与学生
  3. flask中自定义过滤器
  4. 《Linux内核原理与分析》第九周作业
  5. web-msg-send 学习 http://www.workerman.net/web-sender
  6. hsdfz -- 6.17 -- day2
  7. super超类继承特点小结
  8. 关于APS在企业生产计划上的应用
  9. python3学习笔记五(列表2)
  10. 廖雪峰Java7处理日期和时间-4最佳实践-最佳实践