BTW, if the packtime business makes sense to you (beats me ...), a robust way to fix it is to get rid of the time.sleep(1) and do this instead: start = packtime = time.time() while packtime <= start: packtime = time.time() That should zoom on Linux, and spin for about 0.055/2 ~= 0.028 seconds (on average) on Windows.