Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 21, 2016 11:27:30

wallet
Зарегистрирован: 2016-02-21
Сообщения: 50
Репутация: +  2  -
Профиль  

Скорость записи результатов вычислений в текстовый файл

Доброго времени суток
Может кто-нибудь поможет
Есть скрипт, в цикле которого выполняются вычисления на примере такого:

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 раза

Отредактировано wallet (Фев. 21, 2016 11:29:14)

Офлайн

#2 Фев. 21, 2016 11:33:58

4kpt_IV
Зарегистрирован: 2016-01-08
Сообщения: 999
Репутация: +  49  -
Профиль   Отправить e-mail  

Скорость записи результатов вычислений в текстовый файл

Есть. Пишите группами а не по одному объекту…

Отредактировано 4kpt_IV (Фев. 21, 2016 11:34:14)

Офлайн

#3 Фев. 21, 2016 11:36:24

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

Скорость записи результатов вычислений в текстовый файл

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

Офлайн

#4 Фев. 21, 2016 11:49:00

4kpt_IV
Зарегистрирован: 2016-01-08
Сообщения: 999
Репутация: +  49  -
Профиль   Отправить e-mail  

Скорость записи результатов вычислений в текстовый файл

Shaman

Кстати, вариант. Не заметил.

Офлайн

#5 Фев. 21, 2016 12:01:03

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Скорость записи результатов вычислений в текстовый файл

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



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#6 Фев. 21, 2016 12:06:14

wallet
Зарегистрирован: 2016-02-21
Сообщения: 50
Репутация: +  2  -
Профиль  

Скорость записи результатов вычислений в текстовый файл

4kpt_IV
Есть. Пишите группами а не по одному объекту…

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

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

тоже особо результата нет, процентов 5 додаёт только к скорости

Офлайн

#7 Фев. 21, 2016 12:16:00

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

Скорость записи результатов вычислений в текстовый файл

Тогда нужно разбираться куда вы записываете, что за система, как настроена и как замеряете скорость.

Офлайн

#8 Фев. 21, 2016 12:38:20

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Скорость записи результатов вычислений в текстовый файл

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 разница есть но не очень большая.



Офлайн

#9 Фев. 21, 2016 13:40:02

wallet
Зарегистрирован: 2016-02-21
Сообщения: 50
Репутация: +  2  -
Профиль  

Скорость записи результатов вычислений в текстовый файл

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

Офлайн

#10 Фев. 21, 2016 15:15:29

4kpt_IV
Зарегистрирован: 2016-01-08
Сообщения: 999
Репутация: +  49  -
Профиль   Отправить e-mail  

Скорость записи результатов вычислений в текстовый файл

wallet
Вообще Вам нужно посмотреть в сторону какого-нибудь профайлера. Очень хороший доклад был на конференции в Харькове. Ссылку прилагаю.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version