Metadata-Version: 1.1
Name: xtimeout
Version: 0.1.0.1
Summary: Trace a timeout function call and handle with it
Home-page: https://github.com/amos402/py-xtimeout
Author: amos402
Author-email: amos_402@msn.com
License: MIT
Description: ## [Chinese](README_zh.md)
        
        ## Check function with timeout for tracing or handle it
        
        ## Feature
        * Check a function call is timeout or not.
        * The timeout callback and function call are on the same thread.
        * Multi-thread support. Nest call support.
        
        ## Usage
        ```python
        def on_timeout(start_time: float):
            """
            :param start_time: 
            """
            traceback.print_stack()
            pdb.set_trace()
            raise Exception("time_out")
        
        # time unit is millisecond
        @pymonitor.check_time(10, on_timeout)
        def function_1():
            pass
        
        def function_2():
            with pymonitor.check_context(20, on_timeout):
                # do something
                with pymonitor.check_context(10, on_timeout):
                    # do something
        ```
        
        ## Implementation Comparison
        Here are some comparisons of the other implementations.
        
        * Use `signal` module and emit a signal
            - Only works in main thread.
            - Not good for nest call becauseof one signal correspond one handler.  
              If you need nest support you need to enter the timeout function continually  
              and call `alarm`. The cost depend on your accuracy.
            - Support Linux only.
        
        * Start new thread for work and join it with a time, if it had timeout, handle with it (eg. terminate it)
            - Can't inject the function call. 
            - Overhead from threading.
        
        * Use `sys.settrace` keep tracing for each 
            - A huge cost for that.
        
Keywords: timeout,inject,timeout handler,function timetout
Platform: UNKNOWN
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: C++
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python
