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)
    

Metadata

Release files for interruptible-list 0.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for interruptible-list 0.2
File Size Uploaded
interruptible_list-0.2.tar.gz 5.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for interruptible-list 0.2
File Interpreter ABI Platform
interruptible_list-0.2-py3-none-any.whl Python 3 none any Details

Total release size: 15.9 kB

Release files / interruptible_list-0.2.tar.gz

Download URL interruptible_list-0.2.tar.gz
Size 5.0 kB
Tags Source
SHA-256 checksum
How to use checksums
5c50b1f3f22ac2fa0e12ce80d6c27688d7be217b0fb28e02fb70b8a008a73b7a
BLAKE2b-256 checksum
How to use checksums
d41ae9ce5a4065516f2ece0f727b7f26ff862c3522412817bd832f91d7ab334a
Upload date
Uploaded using Trusted Publishing?
What is 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

Release files / interruptible_list-0.2-py3-none-any.whl

Download URL interruptible_list-0.2-py3-none-any.whl
Size 10.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
67ca84046775d64ea257e2f8a2f339a8f2ba1aaba3fb31c70205e490e2e1edd5
BLAKE2b-256 checksum
How to use checksums
56bd3a7299e0ee169184f6d4cc98ffc38742d0332d88c5e9c4c39f6f7f276500
Upload date
Uploaded using Trusted Publishing?
What is 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

Release history Release notifications | RSS feed

This release

0.2 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page