Skip to main content

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)
    

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.

Release history Release notifications | RSS feed

This release

0.2 This release

2 files

Supported by

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