Skip to main content

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`_.

Project details


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

Uploaded Source

Supported by

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