[Weber, Gregoire] >> We're seriously evaluating Python for use in embedded realtime systems >> and need some informations about Pythons garbage collector. ...
[Neil Schemenauer] > It does not run in the background. One option would be to disable > the cyclic garbage collector and rely on the reference counting > alone. Python-style refcounting isn't generally a good approach either when real-time constraints must be met: when a refcount on an object P falls to 0, not only does the interpreter "pause" to reclaim P, but also to reclaim all the objects that were reachable only from P. For example, after def f(): dummy = xrange(10000000) f() it's not just the `dummy` list object that's reclaimed when f exits, it's also about 10 million integer objects. Deeply nested lists and tuples (etc) can provoke similar "burps". > In that case, you will need to be sure that your code does > not create reference cycles. Unfortunately I suspect there is now > Python library code that requires the cyclic collector to be > running. And in the core. For example, new-style class objects are full of cycles -- although it's unlikely most programs will create a large number of new-style classes dynamically. Are there any languages with gc that are suitable for real-time work? Probably not without a lot of effort specifically aimed at meeting real-time constraints. It's also generally true that the Python core and libraries use algorithms with good expected-case behavior but horrid worst-case behavior. For most apps, that's a big win most of the time; for real-time apps, that _can_ be disastrous. _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com