[Python-Dev] tiny optimization in ceval mainloop

Tim Peters tim.one@comcast.net
Thu, 29 Aug 2002 21:51:20 -0400


[Jeremy]
> I noticed that one frequently executed line in the mainloop is testing
> whether either the ticker has dropped to 0 or if there are
> things_to_do.  Would it be kosher to just drop the ticker to 0 whenever
> things_to_do is set to true?  Then you'd only need to check the ticker
> each time through.

[Guido]
> I think not -- Py_AddPendingCall() is supposed to be called from
> interrupts and other low-level stuff, where you don't know whose
> thread state you would get.  Too bad, it was a nice idea.

Well ... does each tstate really need its own ticker?  If that were a
property of the interpreter instead ("number of ticks until it's time for
this interpreter to switch threads"), shared across all threads running in
that interpreter, then I bet the visible semantics would be much the same.
The GIL is always held when the ticker is decremented or reset, so there's
nothing non-deterministic in sharing it.