Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Python Memory Management
Search
Junseong
December 15, 2021
0
670
Python Memory Management
2021.12.15 스캐터랩 엔지니어링 세미나에서 발표한 Python Memory Management 발표자료 입니다.
Junseong
December 15, 2021
Tweet
Share
More Decks by Junseong
See All by Junseong
House Share Platfrom with Senior Citizen 👵🏻🏠 - Junction Asia 2023
codertimo
0
79
Haru - Diary App with Stable Diffusion (JUNCTION 2022)
codertimo
0
1.8k
Imaginar.AI - JUNCTION ASIA 2022 Hackathon
codertimo
0
2.5k
[파이콘 2019] 100억건의 카카오톡 데이터로 똑똑한 일상대화 인공지능 만들기
codertimo
7
4k
All you need is Google's AI Tech: I/O Extended Seoul 2019
codertimo
1
430
[네이버 테크톡] 사람들과 자연스러운 대화를 나누는 인공지능 '핑퐁' 만들기
codertimo
0
390
“머신러닝 엔지니어가 다녀온 F8” 김준성 - F8 2019 Meetup:Seoul
codertimo
0
200
Featured
See All Featured
How STYLIGHT went responsive
nonsquared
98
5.4k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
27
1.9k
Raft: Consensus for Rubyists
vanstee
137
6.8k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
32
2.1k
Designing for Performance
lara
604
68k
The Cult of Friendly URLs
andyhume
78
6.2k
How to train your dragon (web standard)
notwaldorf
91
5.8k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
226
22k
jQuery: Nuts, Bolts and Bling
dougneiner
63
7.6k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
366
25k
Fantastic passwords and where to find them - at NoRuKo
philnash
51
3k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
10
1.3k
Transcript
Python Memory Management ӣળࢿ (ML Research Engineer, Pingpong)
Python Memory Management ޖट ੌ ੌযզө?
Python Memory Management Name, Reference, Object 10 A name Reference
Object
Python Memory Management ޖट ੌ ੌযզө?
Python Memory Management Reference Count 10 A Reference Object B
Reference Count: 2 ࢜۽ чਸ Memory ী Allocation ೞח Ѫ ইצ ӝઓ Object ী Reference ୶о
Python Memory Management Delete Variable
Python Memory Management Reference Count 10 A Object B Reference
Count: 1 (-1) पઁ A Object о Dealloc غח Ѫ ইצ Reference ݅ ઁ
Python Memory Management if Reference Count == 0
Python Memory Management if Reference Count == 0 10 A
Object B Reference Count: 0 (-1) -> deallocation
Python Memory Management п ёо न Reference Count ܳ ٜҊ
Ҋ, ೧ Count о 0 غݶ dealloc
Python Memory Management Ӓۢ Garbage Collection ਃ হחѢ ইצоৈ??
ࢎप Python ীࢲח ਤ җਸ Reference Count based GC ۄҊ ࠗܰҊ णפ.
Cyclic Reference GC ઁݾ ఫझ
Python Memory Management ޖट ੌ ੌযզө?
[L] Python Memory Management Recursive Reference L Object Reference Count:
2 ۠ ࣽജ ଵઑ غয ח ҃ Reference Count ܳ ӝ߈ਵ۽ ೠ Deallocation ࠛоמೞ
[L] Python Memory Management Cyclic Reference L Object Reference Count:
1 : Name L ਸ ਕب ࣽജଵઑ غয ӝ ٸޙী Reference Count ח 0 غ ঋח => Memory Leak!
Python Memory Management GC for Cyclic Reference Python ীࢲ GCח
Cyclic Reference ܳ dealloc ೞחؘ ౠചغয णפ.
Python Memory Management GC for Cyclic Reference
Foo(0) Python Memory Management GC for Cyclic Reference A Object
Next Foo(1) B Next Foo(0) Ref Count : 2 Foo(1) Ref Count : 2
Python Memory Management GC Reference Count Object Reference Count GC_Reference
Count Reason Foo(0) 2 2 copy(refCnt) Foo(1) 2 2 copy(refCnt)
Python Memory Management Automated Garbage Collection Object Reference Count GC_Reference
Count Reason Foo(0) 2 1 Foo(1).next.gcRefCnt -= 1 Foo(1) 2 1 Foo(0).next.gcRefCnt -= 1 Nothing Happened!
Python Memory Management GC for Cyclic Reference
Foo(0) Python Memory Management GC for Cyclic Reference A Next
Foo(1) B Next Foo(0) Ref Count : 1 Foo(1) Ref Count : 1
Python Memory Management GC Reference Count Object Reference Count GC_Reference
Count Reason Foo(1) 1 1 copy(ref_count) Foo(2) 1 1 copy(ref_count) Reference Count ч Deep Copy
Python Memory Management GC Reference Count Object Reference Count GC_Reference
Count Reason Foo(0) 1 0 Foo(1).next.gcRefCnt -= 1 Foo(1) 1 0 Foo(0).next.gcRefCnt -= 1
Python Memory Management Cyclic Reference ী ೠ GC ࢿҕ!! Object
Reference Count GC_Reference Count Reason Foo(0) 1 0 Foo(1).next.gcRefCnt -= 1 Foo(1) 1 0 Foo(0).next.gcRefCnt -= 1 Dealloc Dealloc
GIL: Global Interpreter Lock Python Memory Management
Pythonਵ۽ ѐߊೞח ഥࢎٜ ױҎ ݶ ޙઁ > ॆীࢲ GIL ަөਃ?
Python Memory Management
Python Memory Management
Python Memory Management ୨ 3ѐ Reference Count о хࣗ غযঠ
ೞחؘ, Ѿҗਵ۽ח 2ѐ݅ хࣗؽ -> Race Condition Ѿҗਵ۽ memory leak ਸ ߊࢤदఃѢա ߈۽ ই ইযঠ ೡ objectܳ લৈߡܾ ࣻب .
Python Memory Management Ѧ ߑೞ۰ݶ ݽٚ Reference Count Operation ী
Lock ਸ Ѧݶ ؽ ೞ݅ Python Ѣ ݽٚ Operation ীࢲ Reference Count ܳ ೞӝ ٸޙী ח ষդ ࠺ബਯࢿਸ оઉ১
Python Memory Management Reference Counting ਸ ӝ߈ਵ۽ ೠ GC ܳ
ࢎਊೞח ҃ Thread-Safe ೧ঠ ೣ Ӓ Ѿҗ GIL ߆ী উ হח Ѫ…. -> Ӓېࢲ Java ח Mark and Sweep ߑध GC ܳ ࢎਊפ Ѥ ܲ ࠙..^^7
Python Memory Management
Python Memory Management ࢎप ݫݽܻ ҕрী ҙೠ ղਊب חؘ.. -
Pool, Block, Arena, Generation ١١… ۞р ೞܖઙੌ ೧ঠ ೧ࢲ ӝഥী..ƃƃ
Python Memory Management ࠗ۾: ৵ Python String Overhead о
חо? ॆ ‘ч’ۄח ѐ֛ হ ݽٚ Object - Reference Count - Type Info - Char Array (value) - Intern ച غয ח ৈࠗ - String Object Hash ч
хࢎפ✌ ୶о ޙ ژח ҾӘೠ ݶ ઁٚ ইې োۅ۽
োۅ ࣁਃ! ӣળࢿ (ML Research Engineer, Pingpong)
[email protected]
Facebook. @codertimo Linked in. @codertimo Github. @codertimo