Skip to main content

Build a list from a iterable, interruptible by KeyboardInterrupt (SIGINT), and monitorable by SIGUSR1 and SIGUSR2.

Project description

A interruptible list

Build a list from a iterable, interruptible by KeyboardInterrupt (SIGINT), and monitorable by SIGUSR1 and SIGUSR2.

The function interruptible_list act as list() constructor, and build a list from an iterable, except:

  • When a SIGINT (CTRL-C, KeyboardInterrupt) is received, the construction is stopped, and the current list is returned.
  • When a SIGUSR1 is received, the last item is pickled in a file or a callback is called on the last item, and the construction of the list continues.
  • When a SIGUSR2 is received, the whole current list is pickled in an file or a callback is called on the whole current list, and the construction of the list continues.

Examples

All examples are illustrated with a slow version of range(60).

import time

def mygen():
    for i in range(60):
        time.sleep(1)
        yield i
  • Basic interruptible list:

    from interruptible_list import interruptible_list
    
    L = interruptible_list(mygen())
    
  • With callback on SIGUSR1 to display the last item on stderr

    import sys
    from interruptible_list import interruptible_list
    
    def mycallback(x):
        print(x, file=sys.stderr)
    
    L = interruptible_list(mygen(), callback_last=mycallback)
    
  • With callback on SIGUSR2 to display the mean on the current list on stderr:

    import sys
    from interruptible_list import interruptible_list
    
    def mycallback_mean(thelist):
        mean = sum(thelist)/len(thelist)
        print(mean, file=sys.stderr)
    
    L = interruptible_list(mygen(), callback_whole=mycallback_mean)
    
  • With save on SIGUSR1 and SIGUSR2. Last item (USR1) or the whole current list (USR2) is pickled when the signal is received.

    from interruptible_list import interruptible_list
    
    L = interruptible_list(mygen(), save_last=True, save_whole=True)
    

Project details


Release history Release notifications | RSS feed

This version

0.2

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

interruptible_list-0.2.tar.gz (5.0 kB view hashes)

Uploaded Source

Built Distribution

interruptible_list-0.2-py3-none-any.whl (10.9 kB view hashes)

Uploaded Python 3

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