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 details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

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

Uploaded Python 3

File details

Details for the file interruptible_list-0.2.tar.gz.

File metadata

  • Download URL: interruptible_list-0.2.tar.gz
  • Upload date:
  • Size: 5.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/52.0.0 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.9.2

File hashes

Hashes for interruptible_list-0.2.tar.gz
Algorithm Hash digest
SHA256 5c50b1f3f22ac2fa0e12ce80d6c27688d7be217b0fb28e02fb70b8a008a73b7a
MD5 635dcbb9bb97711cd692457119a59637
BLAKE2b-256 d41ae9ce5a4065516f2ece0f727b7f26ff862c3522412817bd832f91d7ab334a

See more details on using hashes here.

File details

Details for the file interruptible_list-0.2-py3-none-any.whl.

File metadata

  • Download URL: interruptible_list-0.2-py3-none-any.whl
  • Upload date:
  • Size: 10.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/52.0.0 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.9.2

File hashes

Hashes for interruptible_list-0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 67ca84046775d64ea257e2f8a2f339a8f2ba1aaba3fb31c70205e490e2e1edd5
MD5 d659d8c8558476198a2a7a387224ea57
BLAKE2b-256 56bd3a7299e0ee169184f6d4cc98ffc38742d0332d88c5e9c4c39f6f7f276500

See more details on using hashes here.

Supported by

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