Форум сайта python.su
Ferromanда, например, сгенерить файл со строками и поместить его на жесткий диск, так?
Если вам надо хранить столько строк, то держать их в оперативной памяти, мммм, не лучшее решение.
Используйте внешние носители.
Офлайн
все к тому же… генератор списков (где то сказано) эквивалентен коду с циклами, так ли это?
вот выдает для z - false а для t - true то есть значения совпадают а средства неэквивалентные все же? что эффективнее? - это к строкам ….
g=[x+y for x in 'ab' for y in 'ab']
h=[]
for x in 'ab':
for y in 'ab':
h.append(x+y)
z= (g is h)
t= (g == h)
print "z="+`z` + " t= "+`t`
Отредактировано (Июль 8, 2009 21:48:24)
Офлайн
pytolНе средства неэквивалентные, а объекты h и g разные. Так они разные по-любому будут. вот, смотрите:
все к тому же… генератор списков (где то сказано) эквивалентен коду с циклами, так ли это?
вот выдает для z - false а для t - true то есть значения совпадают а средства неэквивалентные все же?
>>> h = []
>>> g = []
>>> print g is h, g == h
False True
Офлайн
да, например, сгенерить файл со строками и поместить его на жесткий диск, так?База данных. Можно, а может даже лучше, нереляционную - Berkeley DB например.
пусть теперь строки разной длины, если я хочу пару строк сконкатенировать и потом во всем списке поискать нет ли совпадения с уже имеющейся строкой, то питон как будет действовать (без размещения всего списка в ОЗУ)? подгружать файл частями?! наверное это несложно …
но хотелось бы в динамике - вот не хранит же питон таблицу умножения вплоть до гугол в степени 100, а 11 в степени 100 и еще в степени 100 практически мгновенно выдает на экран (на 4 страницах А4)… почему же со строками так…Потому что число, даже такое большое, не занимает столько памяти. А в строках каждый символ - минимум байт. 4,5 млрд строк, даже по 1 символу символов будет занимать 4 терабайта. Очевидно, что никакой оперативной памяти не хватит. Мало того - для нормальной обработки такого количества данных стоит кластер мастерить.
Офлайн
Edздорово отмечено!
Не средства неэквивалентные, а объекты h и g разные. Так они разные по-любому будут. вот, смотрите:
>>> h =
>>> g =
>>> print g is h, g == h
False True
import py_compile
py_compile.comoile("первый файл")
py_compile.compile("второй файл")
Отредактировано (Июль 8, 2009 23:38:41)
Офлайн
FerromanБольшое спасибо, вы как раз нашли мою оплошность, из-за которой возникли вопросы! Я то думал (точнее - не подумал!) мегабайты а 10 в 9-й точно терабайты… куда уж на жесткий диск такое…!!!
База данных. Можно, а может даже лучше, нереляционную - Berkeley DB например.
——————————————————————–
но хотелось бы в динамике - вот не хранит же питон таблицу умножения вплоть до гугол в степени 100, а 11 в степени 100 и еще в степени 100 практически мгновенно выдает на экран (на 4 страницах А4)… почему же со строками так…
———————————————————————————–
Потому что число, даже такое большое, не занимает столько памяти. А в строках каждый символ - минимум байт. 4,5 млрд строк, даже по 1 символу символов будет занимать 4 терабайта. Очевидно, что никакой оперативной памяти не хватит. Мало того - для нормальной обработки такого количества данных стоит кластер мастерить.
Отредактировано (Июль 9, 2009 00:27:36)
Офлайн
slivlenдиспетчер задач Винды кое что показывает…. но я бы хотел освоить те средства, что есть для этого в Питоне,
pytol написал:
—————————————————————–
отсается вопрос - какими инструментами проследить
———————————————————————–
Для начала попробуй отследить системными средствами объем занятой/свободной оперативки и свопа перед моментом ошибки.
Офлайн
Ferromanдумаю что не ошибусь - на форуме два типа вопросов - как решить конкретную задачу (которую и не в питоне часто можно сделать) и второй - вопросы о самом Питоне, каковы его возможности, как он устроен и т.п. - вот мои вопросы относятся ко второму типу! Это тоже очень важные вопросы…
Я бы ещё раз посоветовал пересмотреть подход к задаче вообще. Может есть математическое решение, не требующее такого количества ресурсов, или, как минимум сильно его уменьшая.
Делитесь задачей - может что-то придумаем.
Офлайн
pytolда
все к тому же… генератор списков (где то сказано) эквивалентен коду с циклами, так ли это?
pytolони эквиваленты с точки зрения результата, который продуцируют.
что же все-таки нет эквивалентности этих приемов программирования… !!!???
Офлайн
Daevaornвопрос в том, что ТАК понимаемой эквивалентности недостаточно, одинаковый результат могут давать два алгорифма один затратный (плохой , длинный, глупый и т.п.), а другой быстрый и “дешевый”,
они эквиваленты с точки зрения результата, который продуцируют.
Офлайн