Unbuffered read from process using subprocess in Python
The file iterator is doing some internal buffering on its own. Try this:
line = p.stdout.readline()
while line:
print line
line = p.stdout.readline()
You also need to make sure the process you are running is actually flushing its output buffers frequently.
Usually, every program will do more buffering on its input and/or output channels than you appear to desire... unless it's fooled into believing said channel's actually a terminal!
For that "fooling in a good cause" purpose, use pexpect -- it works just fine on a Mac (life is harder on Windows, though there are solutions that might help even there - fortunately we don't need to dwell on those as you use a Mac instead).
This was actually a bug that's fixed in Python 2.6: http://bugs.python.org/issue3907