Async Techniques and Examples in Python Transcripts
Chapter: Parallelism in C with Cython
Lecture: Demo: Fast threading with Cython (conversion)
Login or
purchase this course
to watch this video and the rest of the course contents.
0:00
Alright to make our math go faster we're going to go First let's go to the file we have named over here.
0:06
Now this is an exact copy of the threaded version. Remember the one that's barely better at all? And it has this math part here
0:13
but let's take this and put it somewhere else. I'll call it math_core, something silly like that, pyx. And in here we're going to put that
0:26
and in order to make this work, we have to import math. So let's comment that out and come over here and say... We're going to import math_core
0:37
and we'll do math a couple times. Let's run this one. Now we've done nothing with Cython. Actually it's not going to find it.
0:47
It's just going to crash, there's no math_core. It would run the same speed as the threaded one if we hadn't compiled it, right?
0:52
So this is not anything to do with converting it to Cython yet. This is just restructuring it so it's actually in a Cython file
1:01
but we're not changing the syntax to really take advantage of it. So let's just rob from what we did before. We need a setup file, we know about that.
1:08
So when I go over here And now we need a math_core, we know about that. And I've changed directory over here
1:16
so now we can say, "Python, build and place again." Now, Now if I run it. We're going to run this on Cython, if it runs at all.
1:26
I told you Cython is awesome cause it breaks free from the GIL. So this may go faster, actually dunno.
1:32
I have no idea what's going to happen here when I run this. I think it will work. I don't know how much faster it will be.
1:36
Let's find out. Huh, well it's faster that's cool. Remember we had a 1.07 factor. a 1.07 factor for the Python-threaded version.
1:49
And now we got this version here that's faster but not that fast, why? Well, the GIL is actually still operating here.
1:59
The GIL is still in place. So what we need to do is we're going to go and apply a technique that will explicitly factor our code
2:06
into the part where the GIL is required and a part where there's no GIL required cause it's effectively C. If we indicate that using a Cython syntax
2:14
well, then we're going to break free from this blockade that we have because of the GIL.