изменить размер буфера, чтобы улучшить скорость копирования в python

Я использую скрипт для копирования файлов на общий диск. Размер одного из файлов обычно составляет около 3 ГБ. Копирование довольно медленное, по сравнению с ручным копированием. (все на винде)

Как изменить размер буфера в моем коде? Что-то похожее на ответ в этом вопросе: Python слишком медленно копирует файл большего размера

def copyAllFiles():
src_files = os.listdir(src)
for file_name in src_files:
    full_file_name = os.path.join(src, file_name)
    if (os.path.isfile(full_file_name)):
        shutil.copy(full_file_name, newPath)
        print("copy done")

или есть рекомендация использовать другой метод копирования?


person Mario S    schedule 23.05.2018    source источник
comment
Применение ответа на связанный вопрос решило его для вас? если нет, то почему? Вы просто копируете и вставляете этот код перед своим кодом, и все?   -  person Patrick Artner    schedule 23.05.2018
comment
Извините но нет. Я начинающий. он переопределяет метод? Я использую copyfileobj, пока я использую копию. это правильно?   -  person Mario S    schedule 23.05.2018
comment
Он что-то исправляет — это означает, что он предоставляет какую-то другую реализацию функции, которую shutil использует для внутреннего копирования. Затем он назначает свою версию для использования Shutil: shutil.copyfileobj = _copyfileobj_patched - после этого каждый раз, когда Shutil внутри вызывает copyfileobj, вместо этого он будет вызывать свою пропатченную версию _copyfileobj, которая имеет больший буфер по умолчанию, что делает работу с Windows более гладкой. вы можете заглянуть в исходники, но я предполагаю, что Shutil.copy() внутренне использует другой, который он исправляет.   -  person Patrick Artner    schedule 23.05.2018
comment
см. monkey-patching-in-python-when-we-need-it   -  person Patrick Artner    schedule 23.05.2018
comment
(cpython) исходные коды Shutil.py:   -  person Patrick Artner    schedule 23.05.2018