Чтобы дать вам более полный ответ, вам нужно увидеть ваш код (или, точнее, исполняемый код вашего кода).
Однако частичный ответ можно найти в выводе вашего профиля: io.py
предполагает, что "Python 2" (во избежание сомнений, укажите фактические номера версий) реализует BufferedReader в Python, тогда как _io.BufferedReader
предполагает, что "Python3 "реализует это в C.
Последние новости: размер Python 2.6 io.py
превышает 64 КБ и включает в себя следующий комментарий:
# This is a prototype; hopefully eventually some of this will be
# reimplemented in C.
Python 2.7 io.py
имеет размер около 4 КБ и выглядит как тонкая оболочка модуля _io
.
Если вам нужна реальная помощь с обходным решением для 2.6, покажите свой код.
Вероятный обходной путь для Python 2.6
Вместо:
test = io.open('test.bmp', 'rb')
сделать это:
test = open('test.bmp', 'rb')
Некоторые приблизительные временные цифры , включая недостающее звено (Python 2.7):
Windows 7 Pro, 32-битный файл, размер файла около 5 МБ, код:
while 1:
c = f.read(1)
if not c: break
2.6: io.open 20.4s, open 5.1s
2.7: io.open 3.3s, open 4.8s # io.open is better
3.1: io.open 3.6s, open 3.6s # effectively same code is used
Итак, лучшая история, по-видимому, такова: в общем, не обращайте внимания на io.open, если у вас нет веских причин, например, Вы хотите, чтобы 2.7 шел быстрее.