[Twisted-Python] Gc of deferreds

Christopher Armstrong radix at twistedmatrix.com
Tue Jul 8 14:34:15 MDT 2008


On Tue, Jul 8, 2008 at 4:11 PM, Rutt, Benjamin <Benjamin.Rutt at gs.com> wrote:
> #!/usr/bin/env python
> from twisted.internet import defer,reactor,utils
>
> def foo():
>    d = utils.getProcessOutput('sleep', args=['2'])
>    def cb(data):
>      print "cb fired"
>      return data
>    d.addCallback(cb)
>    return d
>
> foo()
>
> reactor.callLater(5, reactor.stop)
> reactor.run()
>
>
> Yet when I run it, it seems everything works fine:
>
> $ ./spawner.py
> cb fired
> $

getProcessOutput will cause a reference to be held to it. It needs
that reference so it can fire the deferred once the process is
complete.

> I am just questioning the need to keep deferreds in memory somewhere, if
> they haven't fired their callbacks yet.  Thanks.

Um, how will their callbacks be fired if they're not in memory any more?


-- 
Christopher Armstrong
International Man of Twistery
http://radix.twistedmatrix.com/
http://twistedmatrix.com/
http://canonical.com/




More information about the Twisted-Python mailing list