In addition to this, I highly recommend just reading the codebase. I haven't written C since college and it's remarkably readable.
I once tried to catalogue all the stdlib operations which release the GIL, meaning if you use only those (well, only those "heavy" bits, you can still use other small blocking glue bits), you can do "real" multithreading.
It was a fun exercise!