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
SIGUSR1to display the last item onstderrimport 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
SIGUSR2to display the mean on the current list onstderr: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
SIGUSR1andSIGUSR2. 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
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5c50b1f3f22ac2fa0e12ce80d6c27688d7be217b0fb28e02fb70b8a008a73b7a
|
|
| MD5 |
635dcbb9bb97711cd692457119a59637
|
|
| BLAKE2b-256 |
d41ae9ce5a4065516f2ece0f727b7f26ff862c3522412817bd832f91d7ab334a
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
67ca84046775d64ea257e2f8a2f339a8f2ba1aaba3fb31c70205e490e2e1edd5
|
|
| MD5 |
d659d8c8558476198a2a7a387224ea57
|
|
| BLAKE2b-256 |
56bd3a7299e0ee169184f6d4cc98ffc38742d0332d88c5e9c4c39f6f7f276500
|