Timeout(): एक वास्तविक दुनिया का उदाहरण

Python में Functions लिखना

Shayne Miel

Software Architect @ Duo Security

Timeout


def function1():
  # यह फंक्शन कभी-कभी
  # बहुत देर तक चलता है
  ...

def function2(): # यह फंक्शन कभी-कभी # अटक जाता है और रिटर्न नहीं करता ...
Python में Functions लिखना

Timeout

@timeout
def function1():
  # यह फंक्शन कभी-कभी
  # बहुत देर तक चलता है
  ...

@timeout def function2(): # यह फंक्शन कभी-कभी # अटक जाता है और रिटर्न नहीं करता ...

स्टॉपवॉच

Python में Functions लिखना

Timeout - पृष्ठभूमि जानकारी

import signal

def raise_timeout(*args, **kwargs): raise TimeoutError()
# जब "alarm" सिग्नल आता है, तो raise_timeout() कॉल करें signal.signal(signalnum=signal.SIGALRM, handler=raise_timeout)
# 5 सेकंड में एक alarm सेट करें signal.alarm(5)
# alarm रद्द करें signal.alarm(0)
Python में Functions लिखना
def timeout_in_5s(func):

@wraps(func) def wrapper(*args, **kwargs):
# 5 सेकंड का alarm सेट करें signal.alarm(5)
try: # सजाए गए func को कॉल करें return func(*args, **kwargs)
finally: # alarm रद्द करें signal.alarm(0)
return wrapper
@timeout_in_5s
def foo():
  time.sleep(10)
  print('foo!')
foo()
TimeoutError
Python में Functions लिखना
def timeout(n_seconds):

def decorator(func):
@wraps(func) def wrapper(*args, **kwargs):
# n सेकंड का alarm सेट करें signal.alarm(n_seconds)
try: # सजाए गए func को कॉल करें return func(*args, **kwargs) finally: # alarm रद्द करें signal.alarm(0)
return wrapper
return decorator
@timeout(5)
def foo():
  time.sleep(10)
  print('foo!')

@timeout(20) def bar(): time.sleep(10) print('bar!')
foo()
TimeoutError
bar()
bar!
Python में Functions लिखना

अभ्यास करते हैं!

Python में Functions लिखना

Preparing Video For Download...