Differences between revisions 10 and 13 (spanning 3 versions)
Revision 10 as of 2011-03-24 16:55:23
Size: 2749
Editor: PaulBoddie
Comment: Added a link to a description of python-launcher for the OLPC.
Revision 13 as of 2012-11-16 23:16:44
Size: 3347
Editor: PaulBoddie
Comment: wiki restore 2013-01-23
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
Line 2: Line 3:
Line 5: Line 7:
Line 6: Line 9:
Line 9: Line 13:
Line 10: Line 15:
Line 15: Line 21:
See also [[PythonForArmLinux]] and [[OpenEmbedded]].
See also [[PythonForArmLinux|PythonForArmLinux]] and [[OpenEmbedded|OpenEmbedded]].


== Work to improve CPython for embedded applications ==
Line 19: Line 30:
Line 21: Line 33:
 * File access overhead on startup: [[http://mail.python.org/pipermail/python-list/2008-October/564494.html|Improving interpreter startup speed]]  * General interpreter startup costs: [[SpeedUpInterpreterStartup|SpeedUpInterpreterStartup]]
 * File access overhead on startup: [[http://mail.python.org/pipermail/python-list/2008-October/467718.html|Improving interpreter startup speed]], [[http://mail.python.org/pipermail/python-list/2005-May/339691.html|Tons of stats/opens to non-existing files increases Python's startup on loaded NFS servers]], [[http://mail.python.org/pipermail/python-dev/2003-May/035359.html|Startup time]]
 * Import-related costs: [[http://mail.python.org/pipermail/python-dev/2010-March/098042.html|__file__]]
Line 23: Line 37:
Line 26: Line 41:
Line 27: Line 43:
Line 30: Line 47:
 * PyMite
 * [[Tiny Python]]
Line 33: Line 48:
On yet another hand, one can start with a full build, and simply
remove unneeded modules--Tkinter, ...--to realize
a reduced-size Python
with little effort.
 * [[PyMite|PyMite]]
 * [[Tiny Python|Tiny Python]]


On the other hand, one can start with a full build, and simply remove unneeded modules, ''e.g.'', Tkinter, etc., to realize a reduced-size Python with little effort.
Line 40: Line 57:
Line 42: Line 60:
Tools which support this kind of development include the following:
Tools that support this kind of development include the following:

Embedded Python

Python can be used in embedded, small or minimal hardware devices, depending on how limiting the devices actually are.

Devices capable of running CPython

Some modern embedded devices have enough memory and a fast enough CPU to run a typical Linux-based environment, for example, and running CPython on such devices is mostly a matter of compilation (or cross-compilation) and tuning.

Devices which could be considered as "embedded" by modern standards and which can run tuned versions of CPython include the following:

See also PythonForArmLinux and OpenEmbedded.

Work to improve CPython for embedded applications

Various efforts have been made to make CPython more usable for embedded applications:

Reduced or reworked Python implementations

Some devices may be more restrictive in that the typical memory footprint of CPython may exceed the amount of memory available on the device. In such cases, a re-engineered or adapted version of CPython, perhaps even to the point where it can be considered a new implementation of Python, might be appropriate.

Examples of such implementations include the following:

On the other hand, one can start with a full build, and simply remove unneeded modules, e.g., Tkinter, etc., to realize a reduced-size Python with little effort.

Python-based tools for developing embedded applications

Sometimes the embedded environment is just too restrictive to support a Python virtual machine. In such cases, various Python tools can be employed for prototyping, with the eventual application or system code being generated and deployed on the device.

Tools that support this kind of development include the following:

EmbeddedPython (last edited 2022-02-02 18:15:38 by SkipMontanaro)

Unable to edit the page? See the FrontPage for instructions.