[Twisted-Python] Re: [Twisted-commits] r15451 - Fix test failures	under windows by changing the eventual-send operation to
    James Y Knight 
    foom at fuhm.net
       
    Sat Dec 31 10:42:07 MST 2005
    
    
  
On Dec 31, 2005, at 11:59 AM, James Y Knight wrote:
> On Dec 31, 2005, at 1:39 AM, Brian Warner wrote:
>
>> callLater(0) does not guarantee
>> relative ordering of sequentially-scheduled calls,
>>
>
> Yes it does: order of method call.
>
>
>> and the windows
>> reactors in fact execute them in random order.
>>
>
> That is broken.
I'm afraid this is my fault. Heapq does not guarantee stable ordering  
amongst elements with the same key, and on windows, two successive  
calls to time.time() are very likely to return the same number,  
because of its poor resolution. The same error could probably occur  
on unix/linux systems as well, although currently unlikely to the  
point of impossibility. It should be fixable by storing the last time  
of an element added to the queue, and adding epsilon if current time  
is the same.
Just as a point of interest, on my system, this loop never finishes:
import time
def f():
  while 1:
   if time.time()==time.time():
    break
But this one does:
from time import time
def f():
  while 1:
   if time()==time():
    break
James
    
    
More information about the Twisted-Python
mailing list