чтение байта по байтам из файла bin занимает слишком много времени - PullRequest
0 голосов
/ 25 октября 2018

Я пытаюсь прочитать байты из файла bin со следующим кодом:

with open("filedata.bin","rb") as file:
   data = file.read()
   for byte in data:
         print byte

это работает нормально, но проблема в том, что это занимает слишком много времени (около 4 минут).Цель состоит в том, чтобы прочитать любой байт файла bin и отправить его через последовательный интерфейс.

Мой файл имеет размер 101 кБайт.До сих пор я не отправлял никаких данных через последовательный интерфейс.Так что это не может быть проблемой.Я проверяю скорость над оболочкой python с помощью «print byte».Он печатает меня с первого байта до последнего байта.

У кого-нибудь есть идея, как я мог бы читать байты быстрее?

1 Ответ

0 голосов
/ 25 октября 2018

при использовании file.read() без каких-либо аргументов вы сразу читаете весь файл в память.Это часто медленно.

Чтобы ускорить это, вы захотите прочитать файл по несколько байт за раз.

Вы можете сделать это, указав, сколько байтов вы хотите прочитатьНапример:

with open("myfile", "rb") as f:
    byte = f.read(1)
    while byte:
        # do something with the byte
        byte = f.read(1)

Более продвинутый способ сделать это - использовать функцию iter:

for i in iter(lambda x: f.read(1), b""):
    # do something with the byte
...