script uses up all memory
Marko Rauhamaa
marko at pacujo.net
Thu Mar 6 18:53:03 EST 2014
Chris Angelico <rosuav at gmail.com>:
> Can you give a useful example of a closure that does create a refloop?
Just the other day, I mentioned the state pattern:
class MyStateMachine:
def __init__(self):
sm = self
class IDLE:
def ding(self):
sm.open_door()
sm.state = AT_DOOR()
class AT_DOOR:
...
self.state = IDLE()
def ding(self):
self.state.ding()
So we have:
MyStateMachine instance
-> MyStateMachine instance.ding
-> IDLE instance
-> IDLE instance.ding
-> MyStateMachine instance
plus numerous others in this example alone.
In general, event-driven programming produces circular references left
and right, and that might come into wider use with asyncio.
I suspect generators might create circular references as well.
Any tree data structure with parent references creates cycles.
In fact, I would imagine most OO designs create a pretty tight mesh of
back-and-forth references.
Marko
More information about the Python-list
mailing list