Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import logging
- from time import perf_counter
- from functools import wraps
- logging.basicConfig(
- format="%(asctime)s - %(levelname)s - %(message)s",
- level=logging.DEBUG,
- datefmt="%Y-%m-%d %H:%M:%S"
- )
- def timer(func):
- @wraps(func)
- def _timer(*args, **kwargs):
- logging.info(f"Executing {func.__name__}.")
- start = perf_counter()
- result = func(*args, **kwargs)
- end = perf_counter()
- logging.info(f"Executed {func.__name__} in {start-end: .6f} seconds.")
- return result
- return _timer
- @timer
- def elementwise_unsafe_divide(array, divisor):
- if not all((divisor, isinstance(divisor, int))):
- logging.critical("Invalid divisor provided:", divisor)
- exit(1)
- result = []
- invalid_operations = 0
- for elem in array:
- try:
- result.append(elem / divisor)
- except (ZeroDivisionError, TypeError):
- invalid_operations += 1
- result.append(elem)
- continue
- logging.warning(f"Encountered {invalid_operations} invalid operations")
- return result
- def main():
- arr = [1, 2, 4, "hi", "bye"]
- print("Array:", arr)
- result = elementwise_unsafe_divide(arr, 4)
- print("arr / 4(elementwise):", result)
- if __name__ == "__main__":
- main()
Advertisement
Add Comment
Please, Sign In to add comment