Nano Hash - криптовалюты, майнинг, программирование

Индикатор выполнения при чтении большого файла (> 4 ГБ) в Python

Я пытаюсь добавить индикатор выполнения при чтении большого файла (около 4 ГБ). Пока у меня это:

class PercentageFile:

def __init__(self, filename):
    self.size = os.stat(filename)[6]
    self.f = open(filename,"r")
    self.i = self.f.tell()

def __enter__(self):
    return self
def readline(self):
    data = self.f.readline()
    self.i = self.f.tell() 
    return data
def __iter__(self):
    return self
def __next__(self):
    data = self.f.readline()
    if self.i == self.f.tell():
        raise StopIteration
    self.i = self.f.tell()    
    return data
def read(self, size=None):
    if size is None:
        self.i = self.size
        return self.f.read()
    data = self.f.read(size)
    self.i = self.f.tell() 
    return data 
@property
def percentage(self):
    return float(self.i) / self.size * 100.0
def __exit__(self, exc_type, exc_value, traceback):
    self.f.close()

Дело в том, что это намного медленнее, чем просто чтение файла без индикатора выполнения. Я хотел бы знать, есть ли способ, который не сильно влияет на производительность.

В моей системе выполнение for в файле размером 5 КБ занимает 0,00013 секунды, если он создан с использованием open, тогда как с использованием моего класса это занимает 0,02038 секунды.


  • Удаление self.i и использование вместо него self.f.tell() может немного ускорить процесс. 01.09.2016
  • Не читайте построчно, читайте по 100 строк каждый раз. И обновляйте индикатор выполнения только тогда, когда вы достигаете визуально эффективной вехи, например, 5% или 10% или что-то еще, что вы установили для панели. Печать на консоль — большая трата времени. 01.09.2016
  • Мне нужно выполнять некоторые операции в каждой строке 01.09.2016
  • Возможный дубликат индикатора выполнения для чтения строк в текстовом файле 16.11.2017

Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..