これは本当にコメントになるはずですが、とにかく。
ここには、ランタイム45.77sの受け入れられたPython 2ソリューションがあるので、それは明らかに可能であることに注意してください。あなたはPython3の遅いI/Oの犠牲者だと思います(彼らは3.1.2を使用しているようです)。200万行の入力ファイル(除算可能な数値はありません):多くの場合はそれほど違いはありません)、2および3と互換性があるように変更されたコードのバージョンでは、次のようになります。
~/coding$ time python2.6 enormread.py < sample.txt
0
real 0m3.971s
user 0m3.712s
sys 0m0.256s
~/coding$ time python2.7 enormread.py < sample.txt
0
real 0m2.637s
user 0m2.428s
sys 0m0.204s
~/coding$ time python3.2 enormread.py < sample.txt
0
real 0m10.412s
user 0m10.065s
sys 0m0.344s
~/coding$ time ~/sys/Python-3.3.0a2/python enormread.py < sample.txt
0
real 0m6.776s
user 0m6.336s
sys 0m0.436s
~/coding$ time pypy enormread.py < sample.txt
0
real 0m2.211s
user 0m1.948s
sys 0m0.028s
@agf(sum(not int(line) % t for line in sys.stdin[.buffer]))
をミックスに投入するには:
~/coding$ time python2.7 enormfast.py < sample.txt
0
real 0m1.454s
user 0m1.436s
sys 0m0.016s
~/coding$ time python3.2 enormfast.py < sample.txt
0
real 0m2.243s
user 0m2.228s
sys 0m0.012s