Preforks interpreters to reduce script startup time
Project description
Python module launcher
----------------------
This module tries to improve the start-up time of Python scripts. It
does so by doing two things:
- Eliminating the time it takes to spawn a new Python process.
- Loading modules ahead of time.
Eliminating interpreter start-up time is done by maintaining a pool of
Python processes. Reducing module load times is done by importing
modules immediately after a worker is spawned. Python is smart about
not re-importing modules that are already in ``sys.modules``.
I ended up writing this module because of a few small Qt programs that
weren't launching as fast as I would like them too. The results were a
~100ms reduction in startup time, which can be attributed to PySide
being a hefty package to import.
There are plenty of bugs and todos left - handling return code and
proper process shutdown seem to be on top of the list.
Usage
=====
::
Usage: python-module-launcher-3.3 [-hvdpws] socket [mod, ...]
Options:
-h, --help show this help message and exit
-v, --version show version and exit
-d, --daemonize run in background (default: no)
-p, --pidfile pid file to use if running as a daemon
-w, --workers <num> worker processes to start (default: 5)
-s, --spare <num> spare worker processes to maintain (default: 3)
Arguments:
socket path to AF_UNIX socket
mod* modules to pre-import in workers
Examples:
python-module-launcher-3.3 launcher.sock numpy PySide.QtCore
echo -n "module path.to.module" | nc -U launcher.sock
echo -n "file path/to/script.py arg1 arg2 | nc -U launcher.sock
echo -n "entrypoint name==0.1.0 console_scripts name arg1 arg2"
You can send the following commands to the unix socket::
file path/to/script.py arg1 arg2 ...
module path.to.module arg1 arg2 ...
entrypoint name==0.1.0 console_scripts name arg1 arg2 ...
License
=======
This module is released under the terms of the `Revised BSD License`_.
----------------------
This module tries to improve the start-up time of Python scripts. It
does so by doing two things:
- Eliminating the time it takes to spawn a new Python process.
- Loading modules ahead of time.
Eliminating interpreter start-up time is done by maintaining a pool of
Python processes. Reducing module load times is done by importing
modules immediately after a worker is spawned. Python is smart about
not re-importing modules that are already in ``sys.modules``.
I ended up writing this module because of a few small Qt programs that
weren't launching as fast as I would like them too. The results were a
~100ms reduction in startup time, which can be attributed to PySide
being a hefty package to import.
There are plenty of bugs and todos left - handling return code and
proper process shutdown seem to be on top of the list.
Usage
=====
::
Usage: python-module-launcher-3.3 [-hvdpws] socket [mod, ...]
Options:
-h, --help show this help message and exit
-v, --version show version and exit
-d, --daemonize run in background (default: no)
-p, --pidfile pid file to use if running as a daemon
-w, --workers <num> worker processes to start (default: 5)
-s, --spare <num> spare worker processes to maintain (default: 3)
Arguments:
socket path to AF_UNIX socket
mod* modules to pre-import in workers
Examples:
python-module-launcher-3.3 launcher.sock numpy PySide.QtCore
echo -n "module path.to.module" | nc -U launcher.sock
echo -n "file path/to/script.py arg1 arg2 | nc -U launcher.sock
echo -n "entrypoint name==0.1.0 console_scripts name arg1 arg2"
You can send the following commands to the unix socket::
file path/to/script.py arg1 arg2 ...
module path.to.module arg1 arg2 ...
entrypoint name==0.1.0 console_scripts name arg1 arg2 ...
License
=======
This module is released under the terms of the `Revised BSD License`_.
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
module-launcher-0.2.0.tar.gz
(4.5 kB
view details)
File details
Details for the file module-launcher-0.2.0.tar.gz
.
File metadata
- Download URL: module-launcher-0.2.0.tar.gz
- Upload date:
- Size: 4.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6cb2d3c5db6e9476da8795a18cd7b1a6d78872190b415f54f5f7d9574b2ea986 |
|
MD5 | b4adff31c28cad030cd0e2d9bbbc794d |
|
BLAKE2b-256 | 6f589681d8e46600d143453614b114afcc9549c9755e0f369010106dbed20c3c |