Skip to main content

A small library to help running and logging the behaviour of research tools

Project description

runhelper

runhelper is a small library that helps you logs metrics for your instances and stores them on a easy to parse CSV file.

Tool-side Usage

Currently, there are three main types of metric supported.

Timer tags

Timer tags are used to time specific parts of your code.

runhelper.timer_start('my.tag')
time_sensitive_code1()
time_sensitive_code2()
runhelper.timer_stop('my.tag')

Times are accumulated during the execution of your tool.

Counter tags

Counter tags are used to count events.

runhelper.tag_increment('my.tag')

You can optionally increment the tag by a value different than 1 (floats are also supported).

runhelper.tag_increment('my.tag', 3)

Custom tags

You can also log any custom values you want.

runhelper.log_any('my.tag', my_object)

Automatic logging at program termination

By default, runhelper logs all timer and counter tags on normal program termination. If you also want to log when the program is force terminated you need to register the SIGTERM handler:

runhelper.register_sigterm_handler()

If you wish to perform additional operations when a SIGTERM happens you can also pass a callback:

runhelper.register_sigterm_handler(callback_function)

Evaluation-side Usage

The evaluation side of runhelper consists of a single class that encapsulates all functionality. The Runner class helps you run instances in parallel, supports timeouts and memouts (when used with rulsolver) and extracts all the tags logged from your tool into an easy to parse CSV file. The tool also allows you to transparently resume a previously running experiment, skipping all the instances that were executed already. The following snippet exemplifies its usage:

instances = [ INSTANCE_LIST ]

runner = Runner('path_to_runsolver', 'output_file.csv',
                 timeout=TIMELIMIT_IN_SECONDS,
                 memout=MEMLIMIT_IN_KBS,
                 pool_size=NUM_PROCESSES)
                 
for instance in instances:
    runner.schedule(instance, [TOOL_EXECUTABLE, ARG1, ARG2, ...], INSTANCE_OUTPUT_FILE)
    
runner.wait()

This code will, for each instance, call the command TOOL_EXECUTABLE with the arguments you specify and save its output to INSTANCE_OUTPUT_FILE. The result is a CSV file containing one line for each instance with some basic info, plus all the tags that you logged during the tool execution. Here is an example of an output file:

instance real cpu ram timeout memout my.tag.1 my.tag.2
i1 3.2 3.1 5600 False False 0.34 6
i2 10 9.8 6200 True False 0.2 11
i3 2.1 2 1200 False False 0.01 3

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

runhelper-0.2.1.tar.gz (29.8 kB view details)

Uploaded Source

Built Distribution

runhelper-0.2.1-py3-none-any.whl (30.6 kB view details)

Uploaded Python 3

File details

Details for the file runhelper-0.2.1.tar.gz.

File metadata

  • Download URL: runhelper-0.2.1.tar.gz
  • Upload date:
  • Size: 29.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-httpx/0.25.2

File hashes

Hashes for runhelper-0.2.1.tar.gz
Algorithm Hash digest
SHA256 b9d0b9937c162f6f89b6e7b20a76ea33730dd646c2c4103a8411c6cd15934a7e
MD5 ab1e493119d72d2b7e97164c9504c30d
BLAKE2b-256 c6af638a75f5b726fb59977e8a43d788d0d24ecfca11938c13582fc2cae83ddf

See more details on using hashes here.

File details

Details for the file runhelper-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: runhelper-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 30.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-httpx/0.25.2

File hashes

Hashes for runhelper-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 3e02b45fdfbdd3a7daf67d6de382a0766d01bf3a97e96d81a79b68efd4a53fae
MD5 14af5b6c4cd7100510dd6c5421f57520
BLAKE2b-256 b28dd0b854c04da183292533e2aad56a2776fdf09968b303c1f2d50650c92e65

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