On 13 Mag, 23:25, Jean-Paul Calderone <[EMAIL PROTECTED]> wrote: > On Tue, 13 May 2008 14:05:43 -0700 (PDT), Giampaolo Rodola' <[EMAIL > PROTECTED]> wrote: > >On 13 Mag, 22:16, Jean-Paul Calderone <[EMAIL PROTECTED]> wrote: > >> On Tue, 13 May 2008 11:50:30 -0700 (PDT), Giampaolo Rodola' <[EMAIL > >> PROTECTED]> wrote: > >> >On 13 Mag, 17:59, Josiah Carlson <[EMAIL PROTECTED]> wrote: > > >> >> We do not live in a pure world, Python isn't pure (practicality beats > >> >> purity), and by attempting to send some data each time a .push*() > >> >> method is called, there are measurable increases in transfer rates. > > >> >Good point. I'd like to ask a question: if we'd have a default > >> >asyncore.loop timeout of (say) 0.01 ms instead of 30 could we avoid > >> >such problem? > >> >I've always found weird that asyncore has such an high default timeout > >> >value. > >> >Twisted, for example, uses a default of 0.01 ms for all its reactors. > > >> I'm not sure this is right. What timeout are we talking about? Twisted > >> only wakes up when necessary. > > >> Jean-Paul > > >I'm talking about the asyncore.loop timeout parameter which defaults > >to 30 (seconds). > >I don't think that Twisted only wakes up when necessary (surely not by > >using the select reactor). > >Think about the schedule calls feature (reactor.callLater). > >To have that work I guess that a continuous loop must always be kept > >alive, regardless of the reactor used. > > To support scheduling calls, you just have to know when the next call is > going to happen. Then, you can wake up at exactly that time. This is > what Twisted does, even for select reactor. ;)
Yes but how do you know when it's the time to fire up a call without using a thread? You are forced to call time.time() periodically and check if that time had come every time. Take a look at twisted/internet/base/ReactorBase.runUntilCurrent. That's where that should happen. --- Giampaolo http://code.google.com/p/pyftpdlib -- http://mail.python.org/mailman/listinfo/python-list