Расскажите про gc в питоне.
От: Sharov Россия  
Дата: 01.02.23 13:11
Оценка:
Здравствуйте.

Правильно ли я понимаю, что в питоне помимо rc добавили, правда не знаю когда, gc c поколениями?
Т.е. там и rc по старинке и для циклических ссылок добавили gc, или там уже полностью на gc перешли?
Вообще, что там по части управления памятью, есть какие-то серьезные изменения в версии 3.*?

Заранее благодарю.
Кодом людям нужно помогать!
Re: Расскажите про gc в питоне.
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 01.02.23 14:00
Оценка: 27 (4)
Здравствуйте, Sharov, Вы писали:

S>Здравствуйте.


S>Правильно ли я понимаю, что в питоне помимо rc добавили, правда не знаю когда, gc c поколениями?


Уже больше 20 лет как есть GC по достижимости. Версии без этого уже фиг найдёшь, разве что в музее.

Но:

1. GC по достижимости можно выключать (вдруг надо), тогда остаётся только RC.
2. Ты говоришь только про CPython. А есть среди популярного ещё минимум PyPy, у которого _только_ GC по достижимости с поколениями и нет RC.

S>Т.е. там и rc по старинке и для циклических ссылок добавили gc, или там уже полностью на gc перешли?


Первое — да для CPython, второе — для PyPy, Jython, IronPython.

S>Вообще, что там по части управления памятью, есть какие-то серьезные изменения в версии 3.*?


Насколько серьёзные? Структура объектов менялась. C API от 2-го не подходит к 3-му.
PyPy вообще с ними не совместим, с ним общаться только через CFFI на примитивных типах (максимум — строка).

S>Заранее благодарю.


YRW
The God is real, unless declared integer.
Re: Расскажите про gc в питоне.
От: cppguard  
Дата: 01.02.23 22:57
Оценка: 7 (1)
Здравствуйте, Sharov, Вы писали:

S>Правильно ли я понимаю, что в питоне помимо rc добавили, правда не знаю когда, gc c поколениями?

S>Т.е. там и rc по старинке и для циклических ссылок добавили gc, или там уже полностью на gc перешли?
S>Вообще, что там по части управления памятью, есть какие-то серьезные изменения в версии 3.*?

Про изменения в тройке не знаю, но в 2.7 управление было как в детском конструкторе: можно включить/выключить и начать сборку здесь и сейчас (что выгодно отличает CPython от JVM) и ещё получить доступ к информации и циклических ссылках. Тонкой настройки по типу G1 или CMS я не нашёл.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.