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
Requirements
- Python >= 3.5
pip install primer-kit
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):
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):
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)