Stackless Python -- Continuations on Stage
Total Page:16
File Type:pdf, Size:1020Kb
Stackless Python -- Continuations On Stage Christian Tismer Mission Impossible Software Team [email protected] Overview Stackless Python Benchmarks This demo will try to explain how continuations work Some benchmarks comparing Stackless Python and how they can be used. Having read the paper on against standard Python will be presented. Guess Stackless Python is helpful but not mandatory. which version achieves more PyStones under Visitors are welcome to try these new non-local jump Windows? ! facilities. Instead of an implementation of coroutines and Parallel Pattern Matching generators as C extensions, we will see how they can be expressed in Python, using the continuation In order to show Stackless Python’s power, we will module. Since the theory of continuations is not very see 10000 tiny tasks working in parallel on a pattern- broadly known, a small introduction is given. matching problem. This cannot be done with threads due to their massive memory overhead. Continuations One implementation will be shown that uses explicit scheduler calls. With some luck, we will also see "The current continuation at any point in the implicit task switching which is planned for Stackless execution of a program is an abstraction of the rest of Python 1.1. the program” This abstract definition will be much easier to Animated Coroutine Transfer understand in an interactive session. Visitors are invited to play with continuations as first class Together with a simple coroutine example, the objects and learn about the consequences of that current tree of stack frames will be visualized by sentence. animated graphics. Generators Stackless Extension Modules Instead of a direct implementation of coroutines and All existing extension modules will also work with generators, I decided to use the most general Stackless Python. Writing an extension module that approach: Implement continuations as first class allows the new features to be used needs a couple of callable objects, and express generators and design considerations. A framework for Stackless coroutines in Python. These objects can be tried Extensions will be presented, together with a working interactively. implementation of a module that defines its own interpreter function. Extensions following this pattern have the same flexibility as Python functions. Threads vs. Continuations User-defined functions need no longer be callbacks, Few people might know that there is a generator but can now be expressed by coroutines, which are implementation using threads. It can be found in the often faster at runtime and easier to design. source distribution under demo/threads/Generator.py. Its performance will be benchmarked against an The Mission Impossible Software Team (MI5) will be equivalent implementation using continuations. founded during the conference..