David Blume's GitList
Repositories
testpython.git
Code
Commits
Branches
Tags
Search
Tree:
acc285f
Branches
Tags
main
python2
testpython.git
testpython.py
Don't need UTF-8 encoding declaration in Python 3.
David Blume
commited
acc285f
at 2021-01-04 10:25:58
testpython.py
Blame
History
Raw
#!/usr/bin/env python3 # "Hello Friends" in Chinese: 朋友你好 import os import sys import time import functools from argparse import ArgumentParser import counter.counter import sitesize.sitesize from typing import Optional, Callable def timeit(f: Callable) -> Callable: """Decorator that prints the duration of the decorated function.""" @functools.wraps(f) def wrapper(*args, **kwargs): s = time.time() r = f(*args, **kwargs) print(f'{f.__name__} took {time.time() - s:1.3f}s.') return r return wrapper v_print:Callable def set_v_print(verbose: bool) -> None: """ Defines the function v_print. It prints if verbose is true, otherwise, it does nothing. See: http://stackoverflow.com/questions/5980042 :param verbose: A bool to determine if v_print will print its args. """ global v_print v_print = print if verbose else lambda *a, **k: None class Coffee: def __init__(self, price: float): self._price = price @property def price(self) -> float: return self._price @price.setter def price(self, new_price: float) -> None: if new_price > 0 and isinstance(new_price, float): self._price = new_price else: raise ValueError("price must be a non-negative float.") @timeit def main(debug: bool) -> None: script_dir = os.path.abspath(os.path.dirname(sys.argv[0])) print(f'{sys.argv[0]} is in {script_dir}.') # Raymond Hettinger's example use of queue.Queue and threading.Thread v_print("Running counter...") counter.counter.run() # Raymond Hettinger's example use of multiprocessing.pool's ThreadPool v_print("Running sitesize...") sitesize.sitesize.run() cuppa = Coffee(5.00) cuppa.price = cuppa.price - 1.00 if __name__ == '__main__': parser = ArgumentParser(description='Just a template sample.') parser.add_argument('-d', '--debug', action='store_true') parser.add_argument('-v', '--verbose', action='store_true') args = parser.parse_args() set_v_print(args.verbose) main(args.debug)