Найти - Пользователи
Полная версия: Скорость записи результатов вычислений в текстовый файл
Начало » Python для новичков » Скорость записи результатов вычислений в текстовый файл
1
wallet
Доброго времени суток
Может кто-нибудь поможет
Есть скрипт, в цикле которого выполняются вычисления на примере такого:

for i in file:
	hash_object = hashlib.sha256(i)
	hex_dig = hash_object.hexdigest()
	open('text.txt', 'a').write(hex_dig)

Собственно вопрос, если результаты вычислений не записывать в файл то скорость вычислений составляет 1000 иттераций в секунду, а если записывать то около 300 т.е в 3 раза меньше, есть ли способ увеличить хотя бы в 2 раза
4kpt_IV
Есть. Пишите группами а не по одному объекту…
Shaman
Открывать файл за пределами цикла?
4kpt_IV
Shaman

Кстати, вариант. Не заметил.
JOHN_16
4kpt_IVЯ бы назвал это не вариантом, а в принципе правильным решением.
wallet
Расспараллеливание вычислений за счет multiprocessing модуля, плюс в файл записывать также в отдельном потоке или процессе
wallet
4kpt_IV
Есть. Пишите группами а не по одному объекту…

да как то пробовал, особо скорости не добавляет, может ещё поэксперементирую

Shaman
Открывать файл за пределами цикла?

тоже особо результата нет, процентов 5 додаёт только к скорости
Shaman
Тогда нужно разбираться куда вы записываете, что за система, как настроена и как замеряете скорость.
doza_and
wallet
то скорость вычислений составляет 1000 итераций в секунду
import time
t0=time.clock()
object = " "*256
f=open('text.txt', 'a')
for i in range(1000):
    f.write(object)
f.close()
t1=time.clock()
print(t1-t0)
>>> 0.00273258325833

import time
t0=time.clock()
object = " "*256
for i in range(1000):
    f=open('text.txt', 'a')
    f.write(object)
#    f.close()
t1=time.clock()
print(t1-t0)
>>> 0.081321350135
Хлопанье файлом в 30 раз медленнее, но ни о какой секунде даже близко нет речи.
Если писать одним куском то для 10000 блоков 0.0205811971197 если кусками по 256 0.0324881518152 разница есть но не очень большая.
wallet
В общем всем спасибо, просмотрел ещё раз свой код, не стал его сюда полностью вставлять, т.к. на несколько страниц с кучей модулей, а приведеный выше чисто для примера и если его отдельно рассматривать то да, если вынести из цикла открытие файла, действительно в разы быстрее
в моём же случае открытие файла вне цикла практически не играет роли в увеличении скорости, будем смотреть дальше, ещё раз всем спасибо
4kpt_IV
wallet
Вообще Вам нужно посмотреть в сторону какого-нибудь профайлера. Очень хороший доклад был на конференции в Харькове. Ссылку прилагаю.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB