如何经营一家公司;try/finally"-在关闭运行Python脚本的cmd窗口时使用类似的方法?

如何经营一家公司;try/finally"-在关闭运行Python脚本的cmd窗口时使用类似的方法?,python,sockets,cmd,client,Python,Sockets,Cmd,Client,我正在使用套接字创建一个Python服务器/客户端聊天程序(如AOL instant messenger)。 我在强制退出服务器或客户端时遇到问题,因为我的socketInstance.recv()方法发送了大量的“”空白字符串我想知道当cmd窗口被强制退出时,如何运行关闭方法,如解构器,以便我可以优雅地退出。 我已经包括了我的代码,以防万一(不必要): 回声服务器程序 回声客户端程序 谢谢 Jordan您可以使用模块在终止之前执行最终清理: import atexit @atexit.reg

我正在使用套接字创建一个Python服务器/客户端聊天程序(如AOL instant messenger)。 我在强制退出服务器或客户端时遇到问题,因为我的socketInstance.recv()方法发送了大量的“”空白字符串我想知道当cmd窗口被强制退出时,如何运行关闭方法,如解构器,以便我可以优雅地退出。

我已经包括了我的代码,以防万一(不必要):

回声服务器程序 回声客户端程序 谢谢

Jordan

您可以使用模块在终止之前执行最终清理:

import atexit

@atexit.register
def do_cleanup():
    print "doing some cleanup..."
    #close sockets, put chairs on tables, etc
    print "goodbye"

#loop forever, until the user hits ctrl-c
while True:
    pass
结果:

C:\Users\kevin\Desktop>test.py
Traceback (most recent call last):
  File "C:\Users\kevin\Desktop\test.py", line 12, in <module>
    while True:
KeyboardInterrupt
doing some cleanup...
goodbye
C:\Users\kevin\Desktop>test.py
回溯(最近一次呼叫最后一次):
文件“C:\Users\kevin\Desktop\test.py”,第12行,在
尽管如此:
键盘中断
正在做一些清理。。。
再见

如果您的用户强制退出时使用了
键盘中断
,但如果他用X按钮关闭命令窗口,用任务管理器终止任务,拔掉计算机插头等,这将起作用。

奇怪的是,键盘中断实际上并没有为我结束程序,我假设这是因为我正在运行多个线程?
import atexit

@atexit.register
def do_cleanup():
    print "doing some cleanup..."
    #close sockets, put chairs on tables, etc
    print "goodbye"

#loop forever, until the user hits ctrl-c
while True:
    pass
C:\Users\kevin\Desktop>test.py
Traceback (most recent call last):
  File "C:\Users\kevin\Desktop\test.py", line 12, in <module>
    while True:
KeyboardInterrupt
doing some cleanup...
goodbye