Python Memory Management and Tips Transcripts
Chapter: Python variables and memory
Lecture: CPython long source
0:00 Alright, we've taken the red pill,
0:01 let's go explore. Over here, I'd like to enter that link bit.ly/cpythonlong
0:07 and it'll redirect us over to this horrible url,
0:10 which you can see now why I was using Bitly to shorten it.
0:13 This is, in the Python organization,
0:15 the CPython project in the longobject.c file,
0:21 and this is the PyObject
0:23 PyLong_FromLong, and you can just go through and you can see all the stuff that's
0:27 happening that's going on here. So there's all the stuff I deleted we're still in
0:30 the same function and still in the same function.
0:35 When are we done? Goes for aways.
0:38 There's quite a bit going on here.
0:41 Let's go to the top. You can see that this is the long,
0:44 arbitrary precision integer object implementation. And in this objects section,
0:51 you'll see all different sorts of things,
0:53 like Booleans, and then you've got dictionaries,
0:58 here's part of the dictionary implementation.
1:01 There's the allocation stuff. obmalloc.
1:04 Here's the base PyObject.
1:07 Um, yup, PyObject pointers all over the place,
1:10 Right? This thing. So this is the implementation for that and one thing that's interesting
1:15 is, you would think just the base class would be pretty simple,
1:18 but it's 2000 lines long, like the header file.
1:22 The header file, if you go up,
1:23 is already, I think, like 600 lines long.
1:25 So there's a lot of stuff going on with every one of these objects,
1:30 and throughout various places in the course,
1:32 I'll be giving you the short your url's,
1:34 which will take you to different locations in the source code.
1:37 You don't have to go look at it,
1:38 especially if all the code here makes your eyes water.
1:42 That's fine. You don't have to look at it.
1:43 But this is where you can go and see exactly what is happening and when or
1:48 what kind of data is being stored and what structure and how the runtime is using
1:53 that to manage the memory or allocate things and so on.