慕工程0101907
在Linux系统上使用的技术是使用域套接字:import socketimport sysimport timedef get_lock(process_name): # Without holding a reference to our socket somewhere it gets garbage # collected when the function exits get_lock._lock_socket = socket.socket(socket.AF_UNIX, socket.SOCK_DGRAM) try: get_lock._lock_socket.bind('\0' + process_name) print 'I got the lock' except socket.error: print 'lock exists' sys.exit()get_lock('running_test')while True: time.sleep(3)它是原子的,并且避免了如果您的进程被发送SIGKILL而存在锁定文件的问题您可以在文档中阅读socket.close这些套接字在收集垃圾时自动关闭。