2019-08-06

一.atexit退出处理程序

在程序即将结束之前执行的代码,atexit模块定义了注册和取消清理注册的功能。这样注册的功能在正常解释器终止时自动执行, atexit以与 注册顺序相反的顺序运行这些功能如果你注册AB以及C在解释终止时间,他们将在顺序运行CB, A

atexit. register func* args** kwargs 

func注册为要在终止时执行的函数。要传递给func的任何可选参数都必须作为参数传递给 register()可以多次注册相同的函数和参数。

在正常的程序终止时(例如,如果sys.exit()被调用或主模块的执行完成),所有注册的函数都以后进先出顺序调用。假设通常在较高级别的模块之前导入较低级别的模块,因此必须在以后进行清理。

如果在执行退出处理程序期间引发异常,则会打印回溯(除非SystemExit被引发)并保存异常信息。在所有退出处理程序都有机会运行之后,将重新引发要引发的最后一个异常。

该函数返回func,这使得它可以用作装饰器。

atexit. unregister func 

从解释器关闭时要运行的函数列表中删除func在调用之后unregister()当解释器关闭时,即使它被多次注册,也保证不会调用func。 unregister()如果先前未注册func,默默无效。

二.  os.devnull空文件设备

    verbose:bool默认值false,启动详细输出,如果启用 可能无法在多线程上 下文中正常运行

  gevent基于协程的网络库,很容易提升系统的并发行

MySQL取出字段值相同的数据:select count(*),sno from ecard-error group by sno having count(sno)>1则会显示出现相同学号的次数

l=[1,3,7,3,2]
s=set(l)
k=list(sorted(s,key=l.index))
print(k)

 

猜你喜欢

转载自www.cnblogs.com/karenaqi/p/11312248.html