Skip to main content

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


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)

Uploaded Source

Built Distribution

logmap-0.0.3-py3-none-any.whl (19.0 kB view details)

Uploaded Python 3

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

Hashes for logmap-0.0.3.tar.gz
Algorithm Hash digest
SHA256 df3357ab65afcfc270e8c0f04f93ce52f08d066c465ea5ac4ca575564fc8f5fa
MD5 ec93ebf856f8f9e59434166e215bba3f
BLAKE2b-256 ccb5c90be0150f816f7268bbb1c9c7246c253226c1fdf59094d839e3786645f9

See more details on using hashes here.

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

Hashes for logmap-0.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 aef27efff6511c85c9fac09c0a301bb22cb59a35da9747097739c9524352493d
MD5 f070a47ef67aff5683f820109ca33409
BLAKE2b-256 1bbacbe1030fd82d4f2e8ac2200d4b2e8e82956b579974da52beb8f6e93c2f0c

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page