I notice a difference between running the following script on my Mac and on
a PC:

from time import sleep
for i in range(10):
   print i,
   sleep(2)

On my PC this prints a number every 2 seconds. This is the behavior I want.

On my Mac Python waits 10*2 = 20 seconds, and then prints 0 1 2 3 4 5 6 7 8
9

This sounds like a buffered vs. non-buffered output issue. My guess would be that if you increased 10 to something larger, the output buffer would flush at various intervals. The solution on the Mac (or other *nix-like OSes) would be to either start python in unbuffered mode:

  python -u mycode.py

Alternatively, you can force a flush of the output buffer at each iteration:

  import sys
  for i in range(10):
    print i
    sys.stdout.flush()
    sleep(2)

Lastly, you can force all standard-output in your program to be unbuffered without the "-u" parameter:

  sys.stdout = os.fdopen(sys.stdout.fileno(), 'w', 0)

Hope this helps,

-tkc


--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to