KiddoZhu / primer

A lightweight toolbox for debugging and benchmarking Python code

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Primer

Primer is a lightweight toolkit for debugging and benchmarking Python code.

With only one line inserted, primer improves your coding experience.

from primer import debug, profile, performance

Install

Requirements

  • Python >= 3.5
pip install primer-kit

Debug

Exception hook helps you debug your code whenever exception is raise.

debug.setup_hook()

Call decorator monitors every call to the function and its arguments.

@debug.call
def my_function(args):

Profile

Time and memory profilers measure the duration and memory allocation for some code.

with profile.time(), profile.memory():

They can also be used as decorators over functions. A log frequency of 10 outputs results once per 10 calls.

@profile.time(log_frequency=10)
def my_function(args):

Performance

Slot decorator converts all member variables to static slots, which saves memory and runs faster.

@performance.slot
class MyClass(object):

Shared ndarray can be passed across processes without copy, which saves memory by several times and runs faster.

import numpy as np
import multiprocessing as mp

arrays = [performance.SharedNDArray(np.random.rand(100000)) for _ in range(4)]
results = mp.Pool(4).map(np.sum, arrays)

About

A lightweight toolbox for debugging and benchmarking Python code

License:MIT License


Languages

Language:Python 100.0%