Форум сайта python.su
0
Здравствуйте все!!! Интересует вопрос: пишу простенький пока скрипт, который копирует определённые файлы .dbf, запускает индексацию (внешним приложением, собственно, не важно), а затем запускает ещё одно приложенице для обработки этих .dbf'ок… На данном этапе у меня всё работает, однако возник вопрос, который не даёт мне покоя уже несколько дней, но на который я не смог найти вразумительного ответа, а именно: искомые файлы копируются с некого сетевого ресурса в локальной сети, объём их различен, в среднем по 2Гб, на копирование одного только файла у меня уходит около часа. Использую функцию shutil.copy… Есть ли способы увеличить скорость копирования файлов?
Офлайн
88
Лучше обрабатывать их на родной стороне.
Офлайн
221
childeroland
для начала, “по сети” означает Windows сеть и сетевые диски?
И да никто не запретит вам в таком случае самому открывать файл, блоками читать и писать в другой файл. На счет скорости не знаю. Проверьте сами и отпишитесь
Офлайн
0
ShamanНа родной стороне нельзя по двум причинам: это система с DOS и Novell NetWare, как туда прикрутить python я даже не знаю (хотелось бы обойтись без упаковки в .exe); во всей этой хрупкой цепочке последняя запускаемая программа формирует ещё одни базы на основе существующих, при этом блокирует доступ к исходным файлам, поэтому обработка запускается на копии
Лучше обрабатывать их на родной стороне.
Офлайн
0
JOHN_16По сети означает (как в предыдущем посте) ОС DOS c NovellNetWare - там хранятся исходные файлы, и есть сторонний сервер под Windows 2003 Server с клиентом под NetWare. Логинимся в NetWare, получаем доступ к сетевым дискам, оттуда копируем базы…
childerolandдля начала, “по сети” означает Windows сеть и сетевые диски?И да никто не запретит вам в таком случае самому открывать файл, блоками читать и писать в другой файл. На счет скорости не знаю. Проверьте сами и отпишитесь
Офлайн
0
JOHN_16Опять таки, писал выше, что файл может быть блокирован другим приложением, т.е., не факт, что я смогу получить доступ к файлу в какой-то момент времени, и не факт, что моё соединение с этим файлом не сможет быть прервано (прецеденты уже были).
И да никто не запретит вам в таком случае самому открывать файл, блоками читать и писать в другой файл
Офлайн
33
Может быть, дело в размере буфера.
Тогда посмотрите http://blogs.blumetech.com/blumetechs-tech-blog/2011/05/faster-python-file-copy.html
Антивирусы, загруженность сети и т.п. общесистемные вещи исключили из списка “подозреваемых”?
Офлайн
253
childerolandну вам доступны любые команды windows
винда тот же файл с того же источника копирует в разы быстрее
subprocess.call("copy a.dat b.dat",shell=1)
Отредактировано doza_and (Фев. 4, 2014 18:14:28)
Офлайн
857
childerolandкопируй внешними средствами, поддерживающими докачку
Использую функцию shutil.copy… Есть ли способы увеличить скорость копирования файлов?
Офлайн
0
doza_andНу, на сколько я знаю, FAT32 позволяет размещать файлы размером до 4ГБ… На счёт команд Windows… Суть в том, что сам скрипт у меня работает и сделать я его как раз хотел на python в рамках изучения языка… А команды Winodws я мог и в батнике использовать… По правде говоря, перед тем как я решил выпендриться и написать программу на совершенно неизвестном мне языке, я как раз делал командный файл, разницы, если честно, по скорости, не заметил… А вот то же копирование, скажем, в FAR'е выполняется быстрее… Не фонтан, но быстрее.
На той стороне DOS…. вспомнить бы те времена. А как интересно там такие файлы здоровые помещаются?
Офлайн