skip to navigation
skip to content

Not Logged In

module-launcher 0.2.0

Preforks interpreters to reduce script startup time

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`_.
 
File Type Py Version Uploaded on Size
module-launcher-0.2.0.tar.gz (md5) Source 2013-12-04 4KB
  • Downloads (All Versions):
  • 2 downloads in the last day
  • 41 downloads in the last week
  • 222 downloads in the last month