NovaBryan/EVE_Dump
Log | Files | 📦 下载最新源码 (.zip) | Refs | README

atexit.py (1147B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\carbon\common\stdlib\atexit.py
      2 __all__ = ['register']
      3 import sys
      4 _exithandlers = []
      5 
      6 def _run_exitfuncs():
      7     exc_info = None
      8     while _exithandlers:
      9         func, targs, kargs = _exithandlers.pop()
     10         try:
     11             func(*targs, **kargs)
     12         except SystemExit:
     13             exc_info = sys.exc_info()
     14         except:
     15             import traceback
     16             print >> sys.stderr, 'Error in atexit._run_exitfuncs:'
     17             traceback.print_exc()
     18             exc_info = sys.exc_info()
     19 
     20     if exc_info is not None:
     21         raise exc_info[0], exc_info[1], exc_info[2]
     22 
     23 
     24 def register(func, *targs, **kargs):
     25     _exithandlers.append((func, targs, kargs))
     26     return func
     27 
     28 
     29 if hasattr(sys, 'exitfunc'):
     30     register(sys.exitfunc)
     31 sys.exitfunc = _run_exitfuncs
     32 if __name__ == '__main__':
     33 
     34     def x1():
     35         print 'running x1'
     36 
     37 
     38     def x2(n):
     39         print 'running x2(%r)' % (n,)
     40 
     41 
     42     def x3(n, kwd = None):
     43         print 'running x3(%r, kwd=%r)' % (n, kwd)
     44 
     45 
     46     register(x1)
     47     register(x2, 12)
     48     register(x3, 5, 'bar')
     49     register(x3, 'no kwd args')