Пайтон: как ускорять выполнение программы?

Я реализовал следующую программу (с помощью вас), что печатает в файле все маршруты файлов и папок, которые содержит данный маршрут:

from os import walk, getcwd

def ls(ruta = getcwd()):
    for root, subdirs, archivos in walk(ruta):
        f = open("ficheroderutas.txt","a",encoding="utf8")
        for archivo in archivos:
             f.write(root+'\\'+archivo+"\n")
        for subdir in subdirs:
            f.write(root+'\\'+subdir+"\n")
        f.close()
    return 

Проблема, которая у меня есть,, - что, поместив: ls(ruta='C:\\')так как я хочу сохранять в файле все маршруты в файлы и папки моего жесткого диска, он медлит несколько минут с тем, чтобы делать мне вышеупомянутое задание (производясь файл txt почти 30MB). Я осведомлялся о, есть ли более быстрый способ выполнять этот код или любого другого. Я не ищу менять код, если только это не будет, чтобы использовать возможность характерные для какого-то книжного магазина, который позволял бы paralelización, что-то похожее на fork c... я предполагаю, что он будет существовать. Потому что вышеупомянутая точка важна, так как у меня есть несколько основ в моем компьютере. Ну, ответ мог бы быть очень пространным или не так. Главным образом выборы, которые я звучат:

  • производить .exe моей программы, так как я предполагаю, что, если он писал себе в машинном коде, уже составленном, чтобы давать себе в микро рейд быстрее, чем выполняя это из-за переводчика.
  • Переводить в c, предпочтительно с переводчиком python-> c (это называется так, правду?), хотя я предполагаю, что проблема автоматизация этот тип заданий rescritura программ они не дают место в такой работоспособный код как будто он повторно писал один сам.
  • Использовать какой-то книжный магазин python, который позволял бы мне paralelizar мой код.

Кто-то знает, есть ли другой какой-то выбор?. Я не знаю, существует ли какой-то другой выбор. Книжный магазин paralelización существует: Как зовут?

SO: WXP SP3

Пайтон 3.4.4

4
задан 31.12.2016, 12:30
0 ответов

Самая большая проблема твоего кода состоит в том, что ты открываешься постоянно и закрываешь файл, это упрощаешь уже ты уменьшаешь много время (на мой случай он сокращается с 164 секунд до 7 секунд):

from os import walk, getcwd

def ls(ruta = getcwd()):
    with open("ficheroderutas.txt", "a", encoding="utf8") as f :
        for root, subdirs, archivos in walk(ruta):
            for archivo in archivos:
                f.write(root + '\\'+archivo+"\n")
            for subdir in subdirs:
                f.write(root + '\\'+subdir+"\n")

Таким образом, только ты открываешь однажды файл. Имей в виду, который используя with файл закрывается автоматически, закончив функцию. return это также не очень нужно.

7
ответ дан 03.12.2019, 17:59
  • 1
    Спасибо за твой có я говорю, хотя в моем компьютере он не кажется так rá я прошу, не по крайней мере в различии 2 ó rdenes величины. В скорости он сходный с mí или, оба я опаздывают несколько минут. Так или иначе, твоя не ответ на мой вопрос, потому что мой вопрос не идет, на có повторно пишет; я говорю, если сам, а на использовании других ресурсов как которые я упоминаю, что они я звучат. –  25.12.2016, 17:06
  • 2
    @Mr. Они парализуют, имей в виду, что не все операционные системы функционируют равно с python. Если то, что ты ищешь, состоит в том, чтобы улучшать результаты, я рекомендую тебе, что añ adas в твой вопрос операционная система, которую ты используешь, и nú морской окунь версий python и windows. –  27.12.2016, 14:19
  • 3
    @Mr. Они парализуют, Когда ты говоришь " мой вопрос не идет, на có повторно пишет; я говорю, если сам " имей в виду, что có я говорю, что он открывает и закрывает файл так часто это просто có я говорю так неэффективно, что podrí чтобы считать erró neo. Así я как mí nimo cambiarí в это –  16.07.2017, 00:43

Теги

Похожие вопросы