Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 10, 2012 00:31:46

4kpt
От: Харьков
Зарегистрирован: 2010-11-03
Сообщения: 998
Репутация: +  63  -
Профиль   Отправить e-mail  

Счет строк из файла

А я и не надеюсь ни на какие сборщики. Я всегда стараюсь закрывать открытый файл явно или через инструкцию try-except.



Отредактировано 4kpt (Ноя. 10, 2012 00:33:44)

Офлайн

#2 Ноя. 10, 2012 00:33:48

cutwater
От:
Зарегистрирован: 2009-01-08
Сообщения: 444
Репутация: +  19  -
Профиль   Отправить e-mail  

Счет строк из файла

s0rg
Или циклические ссылки и gc у питона это два разных механизма?

GC отлавливает циклические ссылки. В простых случаях работает подсчет ссылок.
То есть подсчет ссылок и GC это два разных механизма.
Немного отличается от Вашего утверждения.



Отредактировано cutwater (Ноя. 10, 2012 00:35:53)

Офлайн

#3 Ноя. 10, 2012 00:36:26

s0rg
От:
Зарегистрирован: 2011-06-05
Сообщения: 777
Репутация: +  25  -
Профиль   Отправить e-mail  

Счет строк из файла

cutwater
GC отлавливает циклические ссылки. В простых случаях работает подсчет ссылок.
Спасибо.

Офлайн

#4 Ноя. 10, 2012 00:36:35

4kpt
От: Харьков
Зарегистрирован: 2010-11-03
Сообщения: 998
Репутация: +  63  -
Профиль   Отправить e-mail  

Счет строк из файла

cutwater,
Если можно поясни.
Какой механизм обнаружения циклических ссылок, если не секрет???
Т.е. в какой момент питон понимает, что ссылка зациклилась. Может ссылка на объект не уменьшается???



Офлайн

#5 Ноя. 10, 2012 00:40:04

cutwater
От:
Зарегистрирован: 2009-01-08
Сообщения: 444
Репутация: +  19  -
Профиль   Отправить e-mail  

Офлайн

#6 Ноя. 10, 2012 00:45:45

4kpt
От: Харьков
Зарегистрирован: 2010-11-03
Сообщения: 998
Репутация: +  63  -
Профиль   Отправить e-mail  

Счет строк из файла

Спасибо, почитаю.

До этих теледебатов думал, что сборщик - это и есть обработчик “ссылок на объект”. Если с объектом все в порядке и ссылки не циклятся - он работает в одном режиме, если нет - начинает работать в другом…. Спасибо за более детальные пояснения.



Отредактировано 4kpt (Ноя. 10, 2012 00:48:06)

Офлайн

#7 Ноя. 10, 2012 08:09:16

reclosedev
От: Н.Новгород
Зарегистрирован: 2012-03-29
Сообщения: 870
Репутация: +  173  -
Профиль   Отправить e-mail  

Счет строк из файла

Хочется еще добавить про with.

4kpt
P.S. Насчет with - я ей не пользуюсь. Я всегда слежу за открытием и закрытием файла. При наступлении любой ошибки осуществляю попытку закрыть файл инструкцией try: file.close(), except: pass.
Поясню почему: Считывание информации функцией with может привести к ошибкам в коде. Нет явного открытия и закрытия файла. Если файл открыт и изменяется, то with может считывать из него информацию: я против этого, так как ценность такой информации сомнительна…
По моему вы что-то путаете, with ничего не читает, он просто вызывает методы __enter__ и __exit__ (при выходе из блока) файлового объекта, которые открывают и закрывают файл, и возвращает ссылку на файловый объект.
with open('file.txt') as f:
    data = f.read()
print data # do something
это тоже самое, что
f = pen('file.txt')
try:
    data = f.read()
finally:
    f.close()
print data # do something
http://www.python.org/dev/peps/pep-0343/
http://effbot.org/zone/python-with-statement.htm

Вообще, оператор with позволяет сделать многие вещи удобными, например использование lock'ов, измерение затраченного времени, коммит транзакций, и т.п. А с помощью contextlib можно создавать свои менеджеры контекста лаконично.

Офлайн

#8 Ноя. 10, 2012 11:38:42

sp3
От:
Зарегистрирован: 2010-01-12
Сообщения: 405
Репутация: +  18  -
Профиль   Отправить e-mail  

Счет строк из файла

вот она, магия:

>>> open('c:/111.txt')
<open file 'c:/111.txt', mode 'r' at 0x012C5230>
>>> print  _
<open file 'c:/111.txt', mode 'r' at 0x012C5230>



Офлайн

#9 Ноя. 10, 2012 12:57:43

adray
Зарегистрирован: 2012-09-15
Сообщения: 123
Репутация: +  18  -
Профиль   Отправить e-mail  

Счет строк из файла

sp3
вот она, магия:
Я только вчера про IPython узнал, так вот там открытые файловые объекты хз где хранятся, т.к. переопределение “_” не приводит к удалению объекта, более того, при вызове
open('filename')
в списке lsof появляется два элемента, а при многократном вызове - соответственно дохрена

Наверное, это фича

Отредактировано adray (Ноя. 10, 2012 12:58:48)

Офлайн

#10 Ноя. 10, 2012 13:39:54

ZZZ
От: Москва
Зарегистрирован: 2008-04-03
Сообщения: 2161
Репутация: +  26  -
Профиль   Адрес электронной почты  

Счет строк из файла

Это не магия, а фитча питонячей консоли.

IPython, это глючное поделие, которое постоянно делает что-то не то. Особенно доставляет не санкционированный с пользователем вызов дескрипторов... Используйте лучше bpython, так как он няшен.



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version