Pipeline Features ================= .. contents:: :local: Introduction ------------ The pipeline offers some convenient features which will make your life easier. Ctrl+C for Graceful Exits ------------------------- If you launched a pipeline and need to stop for whatever reason, you can simply hit `CTRL+C` once. The pipeline will continue executing its current cycle and then proceeds with the finish procedure. This means that usually everything is cleaned up gracefully. Here is an example where the pipeline while processing a ROOT file is suddenly interrupted. The resulting file is still readable and properly closed:: > analyse.py JTE_muon-CC_3-100GeV_401.root -o test.h5 Pipeline and module initialisation took 0.008s (CPU 0.000s). loading root.... /afs/.in2p3.fr/system/amd64_sl7/usr/local/root/v5.34.23/ loading aalib... /pbs/throng/km3net/src/Jpp/v9.0.8454/externals/aanet//libaa.so --------------------------[ Blob 250 ]--------------------------- --------------------------[ Blob 500 ]--------------------------- --------------------------[ Blob 750 ]--------------------------- ^C ========================================== Got CTRL+C, waiting for current cycle... Press CTRL+C again if you're in hurry! ========================================== ================================[ . ]================================ ++ km3pipe.io.hdf5.HDF5Sink: HDF5 file written to: test.h5 ============================================================ 904 cycles drained in 21.279237s (CPU 20.320000s). Memory peak: 150.32 MB wall mean: 0.023490s medi: 0.020623s min: 0.016564s max: 1.540565s std: 0.050769s CPU mean: 0.022434s medi: 0.020000s min: 0.010000s max: 0.990000s std: 0.032663s EventFile io / wall time = 1.72786 / 20.5438 (8.41063 % spent on io.) Time / Memory / CPU Usage -------------------------- Pass the `Pipeline(timeit=True)` argument to show detailed time and CPU usage for every module in the pipeline, and overall memory:: Pipeline and module initialisation took 0.015s (CPU 0.013s). --------------------------[ Blob 100 ]--------------------------- --------------------------[ Blob 200 ]--------------------------- --------------------------[ Blob 300 ]--------------------------- --------------------------[ Blob 400 ]--------------------------- --------------------------[ Blob 500 ]--------------------------- ================================[ . ]================================ ============================================================ 500 cycles drained in 6.592123s (CPU 6.513101s). Memory peak: 312.91 MB wall mean: 0.013066s medi: 0.012130s min: 0.004782s max: 0.114435s std: 0.007302s CPU mean: 0.012913s medi: 0.012014s min: 0.004772s max: 0.110865s std: 0.007137s HDF5Pump - process: 2.510s (CPU 2.456s) - finish: 0.003s (CPU 0.003s) wall mean: 0.005021s medi: 0.004509s min: 0.003390s max: 0.038976s std: 0.002127s CPU mean: 0.004912s medi: 0.004434s min: 0.003382s max: 0.035576s std: 0.001951s StatusBar - process: 0.001s (CPU 0.001s) - finish: 0.000s (CPU 0.000s) wall mean: 0.000205s medi: 0.000223s min: 0.000128s max: 0.000280s std: 0.000065s CPU mean: 0.000206s medi: 0.000223s min: 0.000129s max: 0.000282s std: 0.000066s filter_muons - process: 0.059s (CPU 0.059s) - finish: 0.000s (CPU 0.000s) wall mean: 0.000119s medi: 0.000104s min: 0.000091s max: 0.000326s std: 0.000038s CPU mean: 0.000119s medi: 0.000104s min: 0.000091s max: 0.000327s std: 0.000037s DOMHits - process: 3.839s (CPU 3.821s) - finish: 0.038s (CPU 0.038s) wall mean: 0.007678s medi: 0.007034s min: 0.000944s max: 0.075129s std: 0.005830s CPU mean: 0.007642s medi: 0.007021s min: 0.000945s max: 0.074965s std: 0.005801s Services -------- Modules can provide services with can be used in the whole pipeline, without the need to attach anything to the blob. This part of the documentation is WIP, but the feature is there ;) Automatic HDF5 Writing ---------------------- The `Table` class has the attribute `h5loc` which can also be set upon initialisation. It is the target location in an HDF5 file if a `km3pipe.io.hdf5.HDF5Sink` is attached to the pipeline. Use this datastructure if you want to dump out your data into an HDF5 file.