New issue 2614: Differences in buffering of stdin between CPython and PyPy
https://bitbucket.org/pypy/pypy/issues/2614/differences-in-buffering-of-stdin-between
realead:
The man pages of CPython say the following about option `-u`:
-u Force stdin, stdout and stderr to be totally unbuffered. ... Note that
there is internal buffering in xread‐ lines(), readlines() and file-object
iterators ("for line in sys.stdin") which is not influenced by this option.
So if we read from `sys.stdin` with help of file-object iterator, we can
see/feel the buffering even if python was called with options `-u`.
However, for pypy we can see, that if started with option `-u` the reading from
`sys.stdin` with help of file-object iterator becomes slower.
Admittedly, pypy man pages don't say, that `sys.sdin` stays buffered for `-u`,
but this is still a difference from the behavior of CPython.
To reproduce:
First step: create a large input file by running the following script:
```
#!python
#create_data.py
for i in xrange(10**6):
print 10**9
```
via `python create_data.py > input.in`.
Second step: run the following script to see the difference of running times:
```
#!python
#read_it.py
import sys
ans = 0
for line in sys.stdin:
if int(line)%k == 0:
ans += 1
print(ans)
```
with `pypy read_it.py < input.in` and `pypy -u read_it.py < input.in`
_______________________________________________
pypy-issue mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-issue