A hierarchical, context-manager logger utility with multiprocess mapping capabilities
Project description
logmap
A hierarchical, context-manager logger utility with multiprocess mapping capabilities
Install
!pip install git+https://github.com/quadrismegistus/logmap
Usage
from logmap import logmap
Basic usage
with logmap('testing...'):
# ... do something ...
pass
testing... @ 2023-12-12 12:58:19,866
⎿ 0 seconds @ 2023-12-12 12:58:19,867
Getting duration
# get duration
with logmap('testing...') as lm:
naptime = lm.nap()
testing... @ 2023-12-12 12:58:19,874
│ napping for 0.4 seconds @ 2023-12-12 12:58:19,875
⎿ 0.4 seconds @ 2023-12-12 12:58:20,280
assert naptime == lm.duration
Nested logging
with logmap('testing nested logging') as lm:
with logmap('opening nest level 2') as lm2:
with logmap('opening nest level 3') as lm3:
lm3.nap()
testing nested logging @ 2023-12-12 12:58:20,292
│ opening nest level 2 @ 2023-12-12 12:58:20,293
│ │ opening nest level 3 @ 2023-12-12 12:58:20,294
│ │ │ napping for 0.3 seconds @ 2023-12-12 12:58:20,294
│ │ ⎿ 0.3 seconds @ 2023-12-12 12:58:20,599
│ ⎿ 0.3 seconds @ 2023-12-12 12:58:20,600
⎿ 0.3 seconds @ 2023-12-12 12:58:20,601
Mapping
import random,time
# get objs to map
objs = list(range(5))
# define function to map
def function_to_map(naptime):
naptime = random.random() * naptime / 2
time.sleep(naptime)
return naptime
# open the logmap
with logmap('testing function mapping') as lm:
# get results as a list
results = lm.map(function_to_map, objs, num_proc=2)
testing function mapping @ 2023-12-12 13:00:31,037
│ mapping function_to_map to 5 objects [2x]: 100%|██████████| 5/5 [00:02<00:00, 2.09it/s]
⎿ 2.4 seconds @ 2023-12-12 13:00:33,433
Or get a generator for results as they arrive (in order):
with logmap('testing function mapping') as lm:
# this is a generator
results_iter = lm.imap(function_to_map, objs, num_proc=2)
# loop as results arrive
for res in results_iter:
# this will update progress bar
lm.log(f'got result: {res:.02}')
testing function mapping @ 2023-12-12 13:01:23,981
│ got result: 1.7 [2x]: 100%|██████████| 5/5 [00:02<00:00, 1.99it/s]
⎿ 2.5 seconds @ 2023-12-12 13:01:26,500
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
logmap-0.0.3.tar.gz
(18.4 kB
view details)
Built Distribution
logmap-0.0.3-py3-none-any.whl
(19.0 kB
view details)
File details
Details for the file logmap-0.0.3.tar.gz
.
File metadata
- Download URL: logmap-0.0.3.tar.gz
- Upload date:
- Size: 18.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/4.0.2 CPython/3.11.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | df3357ab65afcfc270e8c0f04f93ce52f08d066c465ea5ac4ca575564fc8f5fa |
|
MD5 | ec93ebf856f8f9e59434166e215bba3f |
|
BLAKE2b-256 | ccb5c90be0150f816f7268bbb1c9c7246c253226c1fdf59094d839e3786645f9 |
File details
Details for the file logmap-0.0.3-py3-none-any.whl
.
File metadata
- Download URL: logmap-0.0.3-py3-none-any.whl
- Upload date:
- Size: 19.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/4.0.2 CPython/3.11.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | aef27efff6511c85c9fac09c0a301bb22cb59a35da9747097739c9524352493d |
|
MD5 | f070a47ef67aff5683f820109ca33409 |
|
BLAKE2b-256 | 1bbacbe1030fd82d4f2e8ac2200d4b2e8e82956b579974da52beb8f6e93c2f0c |