IPython
%timeit example:%timeit -c main.check("122342344234234")9.32 ms ± 308 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)from bitcoin import *private_key = sha256(seed)public_key = privtopub(private_key)addr = pubtoaddr(public_key)Язык динамический, но для наглядности можно указать типы передаваемых параметров
def test(s: str, b: int): print(s*2) print(b*10)Скачивание страниц в разных потоках
from concurrent.futures import ThreadPoolExecutor as Executorurls = """google twitter facebook youtube pinterest tumblr instagram reddit flickr meetup classmates microsoft apple linkedin xing renren disqus snapchat twoo whatsapp""".split()def fetch(url): from urllib import request, error try: data = request.urlopen(url).read() return '{}: length {}'.format(url, len(data)) except error.HTTPError as e: return '{}: {}'.format(url, e)with Executor(max_workers=4) as exe: template = 'http://www.{}.com' jobs = [exe.submit(fetch, template.format(u)) for u in urls] results = [job.result() for job in jobs] print('\n'.join(results))Заменяем Executor на ProcessPoolExecutor получаем скачивание в разных процессах
from concurrent.futures import ProcessPoolExecutor as ExecutorЛогирование
import logginglogger = logging.getLogger()logger.debug('This is for debugging. Very talkative!')logger.info('This is for normal chatter')logger.warning('Warnings should almost always be seen.')logger.error('You definitely want to see all errors!')logger.critical('Last message before a program crash!')if __name__ == '__main__': logging.basicConfig(level=logging.DEBUG)ERROR:root:Something failed:Traceback (most recent call last): File "logtb.py", line 5, in <module> 1/0ZeroDivisionError: division by zeroПарсинг аргументов командной строки
import argparseif __name__ == '__main__': from argparse import ArgumentParser parser = ArgumentParser(description='My app which is mine') parser.add_argument('-ll', '--loglevel', type=str, choices=['DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL'], help='Set the logging level') args = parser.parseargs() logging.basicConfig(level=args.loglevel)Планировщик задач встроенный в Python
import schedimport timefrom datetime import datetime, timedeltascheduler = sched.scheduler(timefunc=time.time)def saytime(): print(time.ctime()) scheduler.enter(10, priority=0, action=saytime)saytime() try: scheduler.run(blocking=True) except KeyboardInterrupt: print('Stopped.')Цветовое оформление логов
import colorloglogger = colorlog.getLogger()logger.setLevel(colorlog.colorlog.logging.DEBUG)handler = colorlog.StreamHandler()handler.setFormatter(colorlog.ColoredFormatter())logger.addHandler(handler)logger.debug("Debug message")logger.info("Information message")logger.warning("Warning message")logger.error("Error message")logger.critical("Critical message")import dominatefrom dominate.tags import *doc = dominate.document(title='Main Page')with doc.head: meta(charset="utf-8")with doc.body: h1("hello!")print(str(doc))Инфа по процессору, памяти, диску и сети
psutilimport psutilimport os, sys, timepid = os.getpid()p = psutil.Process(pid)print('Process info:')print(' name :', p.name())print(' exe :', p.exe())data = []while True: data += list(range(100000)) info = p.memory_full_info() # Convert to MB memory = info.uss / 1024 / 1024 print('Memory used: {:.2f} MB'.format(memory)) if memory > 40: print('Memory too big! Exiting.') sys.exit() time.sleep(1)Process info: name : Python exe : /usr/local/Cellar/.../PythonMemory used: 11.82 MBMemory used: 14.91 MBMemory used: 18.77 MBMemory used: 22.63 MBMemory used: 26.48 MBMemory used: 30.34 MBMemory used: 34.19 MBMemory used: 38.05 MBMemory used: 41.90 MBMemory too big! Exiting.Кроссплатформенный мониторинг изменений файловой системы
watchdog from watchdog.observers import Observerfrom watchdog.events import (PatternMatchingEventHandler, FileModifiedEvent, FileCreatedEvent)observer = Observer()class Handler(PatternMatchingEventHandler): def on_created(self, event: FileCreatedEvent): print('File Created: ', event.src_path) def on_modified(self, event: FileModifiedEvent): print('File Modified: %s [%s]' % ( event.src_path, event.event_type))observer.schedule(event_handler=Handler('*'), path='.')observer.daemon = Falseobserver.start()try: observer.join()except KeyboardInterrupt: print('Stopped.') observer.stop() observer.join()File Created: ./secrets.txtFile Modified: . [modified]File Modified: ./secrets.txt [modified]File Modified: ./secrets.txt [modified]File Modified: ./secrets.txt [modified]File Modified: ./secrets.txt [modified]Stopped.