Brought to you by Michael and Brian - take a Talk Python course or get Brian's pytest book


Transcript #288: Performance benchmarks for Python 3.11 are amazing

Return to episode page view on github
Recorded on Tuesday, Jun 14, 2022.

00:00 Hello and welcome to Python Bytes, where we deliver Python news and headlines directly to your earbuds.

00:04 This is episode 288, recorded June 14th, 2022.

00:10 I'm Michael Kennedy.

00:11 And I am Brian Okken.

00:12 Brian, how are you doing?

00:13 I'm excellent today.

00:15 I hear you're a little busy.

00:16 But it's just, you know, being a parent and having side jobs and stuff like that.

00:21 Of course. Well, it's better than the alternative.

00:24 Definitely. I was talking to somebody this weekend about like their one job

00:28 and trying to balance job and life.

00:30 And I'm like, I don't even remember what that's like with just one job.

00:33 I know. Or you have a job where you go to work and you do the work.

00:36 And then when you go home, there's no real reason to do the job anymore.

00:39 So you can just step away from it.

00:41 It sounds glorious.

00:41 And yet I continue to choose the opposite, which I also love.

00:45 All right. Well, speaking of stuff people might love, you want to kick us off with your first item?

00:50 Yeah, we're going to talk about polar bears.

00:52 No, not polar bears.

00:53 A project called Polars.

00:56 And actually, it's like super fun and cool.

00:59 So Polars was suggested to us by actually several listeners.

01:02 We got several people sent in.

01:05 And I'm sorry, I don't have their names, but thank you.

01:07 Always send great stuff our way.

01:09 We love it.

01:10 But Polars is billed as a lightning fast data frame library for Rust and Python.

01:17 And it is written in Python.

01:21 No, it's written in Rust.

01:23 But they have a full API is present in Python.

01:31 And it's kind of neat, actually, how they've done it.

01:34 So we've got up on the screen the splash screen for the Polars project.

01:40 There's a user guide and API reference, of course.

01:43 But one of the things I wanted to talk about is some of their why you would consider it.

01:48 So Polars is lightning fast data frame library.

01:52 It uses an in-memory query engine.

01:54 And it says it's embarrassingly parallel in execution.

01:59 And it has cache-efficient algorithms and expressive API.

02:04 And they say it makes it perfect for efficient data wrangling, data pipelines, snappy APIs, and so much more.

02:10 But I just also is fun.

02:13 I played with it a little bit.

02:16 It's zippy and fun.

02:17 They have both the ability to do lazy execution and eager execution, whichever you prefer for your use.

02:26 It's multi-threaded.

02:28 It has a notion of single instruction, multiple data.

02:33 I'm not exactly sure what that means, but makes it faster, apparently.

02:37 And I was looking through the whole, the introductory user's guide is actually written like a very well-written book.

02:48 And it looks like the whole guide, as far as I can tell, is written for the Python API.

02:53 So I think that was part of the intent all along, is to write it quickly in Rust.

02:58 expose it to Rust users also, but also run it with Python.

03:03 And it's just really pretty clean and super fast.

03:08 One of these benchmark results performance things was, it's like Spark was taking 332 seconds and they took 43 seconds.

03:18 It's 100 million rows and it's just like, let's load up a couple of pieces of data or something.

03:27 Right.

03:27 So there's a lot of focus on this, making sure that it's fast, especially when you don't need everything, like doing lazy evaluation or making sure you do multiprocessing.

03:41 One of the things I thought was really kind of cool about it, I was looking through the documentation, is there's a section on, that says, it was a section that was talking about parallelization.

03:54 It says, do not kill the parallelization.

03:56 Because with Python, we know we, there is, basically there's ways to use polars that can kill parallel processing because of the GIL.

04:07 If you're using, if you don't do it the way they've set it up, you can use it in a way that makes it a little slower, I guess, is what I'm saying.

04:16 But, so there's a section on this talking about the polar expressions, polars expressions.

04:22 And these are all set up so that you can pass these expressive queries into polars and have it run in the background and just make things really fast.

04:33 And sort of skirt around the GIL because you're doing all the work in the Rust part of the world.

04:41 And then collecting the data later.

04:44 So there's like a set up the query and then collect the query.

04:47 That's kind of cool.

04:49 So, anyway, I just thought this is a really, looks fun.

04:52 And it's, it's just a, there's nothing to, you don't have to do, know that it's in Rust.

04:57 You just say pip install polars and it works.

05:00 So.

05:00 Yeah, that's great.

05:01 Out in the audience, Tharab asks, why Rust and not C?

05:06 Maybe an example there is Pandas versus this.

05:10 Also, probably the person who wrote it just really likes Rust.

05:12 And I think Rust has a little bit more thread safety than straight C does.

05:17 I'm not 100% sure.

05:18 But this uses threads, as you point out, whereas the other one, Pandas.

05:22 And others in C don't.

05:24 I also think that we're going to see a lot more of things like this.

05:27 Like, because I think some of the early faster packages for Python were written in C because Rust wasn't around or it wasn't mature enough.

05:37 But I think we're going to see more people saying, well, I want it to be closer to the processor for some of this stuff.

05:45 Why not Rust?

05:46 Because I think Rust is a cleaner development environment than C right now.

05:51 Yeah, I agree.

05:52 Absolutely.

05:53 It's just a more modern language, right?

05:55 You know, C is keeping up.

05:57 C is never going to be old, I don't think.

06:00 But yeah.

06:01 Yeah.

06:02 Yeah, yeah.

06:02 I don't mean to say that C is out, not modern in the sense that people are not using it.

06:06 But it doesn't embrace in its sort of natural form the most, you know, smart pointers and things like that.

06:12 Yeah.

06:12 And there's C++ maybe, but not C.

06:14 There's safety features built into Rust to make sure you don't, just make it easier to not do dumb things.

06:21 I guess.

06:22 Let's put it that way.

06:23 Indeed.

06:25 All right.

06:25 Well, let's jump on to my first item, which is a follow up from last week.

06:29 Python developer survey 2021.

06:31 Yes, you heard that right.

06:33 I know it's 2022.

06:33 These are the results from the survey that was at the end of last year.

06:36 So let's, I'm going to kind of skim through this and just hit on some of the main ideas here.

06:42 There's a ton of information and I encourage people to go over and scroll through it.

06:46 This is done in conjunction with the folks over at JetBrains, the PyCharm team and all that.

06:51 So it was collected and analyzed by the JetBrains folks, but put together independently by the PSF, right?

06:58 So it's intended to not be skewed in any way towards them.

07:01 All right.

07:02 So first thing is if you're using Python, is it your main language or your secondary language?

07:06 84% of the people say it's their main language with 16% picking up the balance of not so much.

07:12 It's been pretty stable over the last four years.

07:14 What do you think of this, Brian?

07:15 I think that there's a lot of people like me.

07:20 I think that it started out as my secondary language and now it's my main language.

07:24 Yeah.

07:25 Interesting.

07:26 Yeah.

07:27 And it got sucked in.

07:27 Like, ah, maybe I'll use it to test my C stuff.

07:29 Wait, actually, this is kind of nice.

07:30 Maybe I'll do more of this.

07:31 Yeah.

07:32 There's always the next question or analysis is always fraught with weird overlaps.

07:39 But I like the way they ask this a little bit better than a lot of times.

07:42 It says Python usage with other languages.

07:45 What other languages do you use Python with?

07:47 Rather than maybe a more general one where they ask, well, what is the most popular language?

07:51 And you'll see weird stuff like, well, most people code in CSS.

07:54 Like, I'm a full stack CSS developer.

07:57 Like, no, you're not.

07:58 Just everyone has to use it.

07:59 Like, what is this?

07:59 It's a horrible question.

08:00 Right.

08:01 So this is like, if you're doing Python, what other languages do you bring into the mix?

08:05 And I guess maybe just hit the top five.

08:07 JavaScript, because you might be doing front and back end.

08:09 HTML, CSS, same reason.

08:11 Bash shell, because you're doing automation build, so on.

08:14 SQL.

08:15 SQL.

08:15 I'm surprised there's that much direct SQL, but there it is.

08:19 And then C and C++, speaking of that language.

08:21 Also, to sort of address the thing that I brought up before, Rust is at 6%.

08:27 Last year, it was at 5%.

08:28 So it's compared to C at 30.

08:30 And 29, so they both grew by 1% this year.

08:33 Okay.

08:33 Yeah.

08:34 I think they both grew.

08:36 That's interesting.

08:36 Yeah, exactly.

08:37 Another thing that people might want to pay attention to is you'll see year over year stuff

08:43 all over the place in these reports, because they've been doing this for a while.

08:46 So like the top bar that's darker or sorry, brighter is this year, but they always also

08:53 put last year.

08:54 So for example, people are doing less bash.

08:56 You can see like it's lower bar is higher and they're doing less PHP.

09:00 Probably means they love themselves a little bit more.

09:03 Don't go home crying.

09:05 Okay.

09:06 Let's see.

09:07 Languages for web and data science.

09:09 This is kind of like if you're doing these things, what to use more.

09:13 So if you're doing data science, you do more SQL is your most common thing.

09:16 If you're doing web surprise, JavaScript and HTML is the most common other thing.

09:21 Yeah.

09:22 Let's see.

09:23 What do you use Python for?

09:25 Work and personal is 50%.

09:27 Personal is 29 and work 20%.

09:30 Kind of interesting that more people use it for side projects.

09:34 If they use it for just one or the other of work or personal.

09:37 I guess people who know Python at work, they want to go home.

09:40 They're like, you know what?

09:40 I could automate my house with this too.

09:42 Let's do that.

09:42 I think that, yeah, I would take it like that.

09:45 I think more people, it isn't just even automated your house.

09:48 It's just playing around with it at home.

09:49 Like, yeah, I heard about this, this new web framework, FastAPI.

09:53 I want to try it out.

09:54 Things like that.

09:55 So.

09:55 Yeah, absolutely.

09:56 I'm going to skip down here through a bunch of stuff.

09:58 What do you use Python for the most?

10:01 Web development, but that fell year over year.

10:04 Data analysis stayed the same year over year.

10:06 Machine learning fell year over year.

10:08 And a bunch of stuff.

10:09 But so sort of the growth areas year over year are education and desktop development.

10:14 And then other, I think it's pretty.

10:17 Also game development doubled.

10:19 Doubled from one to two percent.

10:21 I mean, from one to two is probably like there was, you know, that might be within the margin

10:25 of error type of thing.

10:26 But still, it doubled.

10:27 But I think just the other.

10:28 No, other didn't grow.

10:30 There's just, I think it's just more spread out.

10:31 I don't know.

10:32 Because there's still, I think, same number of people using Python.

10:34 All right.

10:34 Are you a data scientist?

10:36 One third, yes.

10:37 Two thirds, no.

10:38 That's that fits with my mental model of the Python space.

10:42 One third data science, one third web and API, and one third massively diverse other.

10:47 The way I see the ecosystem.

10:48 Python three versus two.

10:51 I think we're asymptotically as a limit approaching Python three only.

10:55 But year over year, it goes 25% from 2017, then 16% Python two, then 10%, then six, then

11:03 five.

11:03 And then there's just huge code bases that are stuck on Python two.

11:06 Like some of the big banks have like 5,000 Python developers working on Python two code bases

11:12 that are so specialized and tweaked that they can't just swap out stuff.

11:16 So, you know, that might represent 5% bank usage.

11:19 I don't know.

11:19 I just, I feel bad for you.

11:23 We're rooting for you.

11:25 Everybody out there using Python two.

11:27 Stick in there.

11:28 Let's approach that limit.

11:29 Yeah, yeah.

11:30 Let's divide by n factorial, not n for your limit there.

11:32 Let's go.

11:33 Get in there.

11:33 All right.

11:34 Python three nine is the most common version.

11:37 Three 10 being 16% and three eight being 27% versus 35.

11:42 So that's, that's pretty interesting.

11:44 Yeah.

11:44 I feel like this is, hey, this is what comes with my Linux.

11:47 This is what comes with my Docker.

11:49 So I'm using that, but maybe it's more.

11:51 Yeah.

11:52 It's interesting because you and I like our interesting space because we're always looking

11:56 at the new stuff.

11:57 So I, I'm at, I'm at three 10 and I can't wait to jump to three 11.

12:00 Yeah.

12:01 And actually I've switched to three 11 for some projects.

12:05 So, but there's a lot of people that was like, man, Python's pretty good.

12:09 And then it's been good for a while.

12:11 So I don't need a lot of the new features.

12:13 So.

12:14 Yeah, for sure.

12:15 I'm going to later talk about something that might shift that.

12:19 Yeah.

12:20 To the right.

12:22 I've actually been thinking like, should I maybe install three 11 beta?

12:25 See how stable that is on the servers.

12:27 We'll see.

12:28 That might be a bad choice.

12:29 Might be a good choice.

12:31 That's what's okay.

12:32 where do you install Python from?

12:34 38%?

12:35 Just download the thing from Python.org and run with that.

12:37 Yeah.

12:38 The next most common option is, to install it via your OS package manager, apt, homebrew,

12:46 whatever.

12:46 Yeah.

12:47 And Alvaro has a great little recommendation out there for people who are stuck on Python

12:51 too.

12:51 There probably is a support group for Python two users.

12:54 Hi, my name is Brian and I use Python too.

12:57 Hi, Brian.

12:59 All right.

13:02 Another one I thought was pretty interesting is, the packaging stuff, the isolation stuff,

13:08 before we get there really quick, web frameworks, FastAPI continues to grow.

13:13 Yeah.

13:13 Pretty strong here.

13:15 We've got Flask is now maybe within the margin error, but just edged ahead of Django, but fast

13:22 API almost doubled in usage over the last year.

13:25 It grew nine percentage points, but it was at 12% last year.

13:28 And so now it's at 21%, which is, that's a pretty big chunk to take out of established

13:32 frameworks.

13:32 Yeah.

13:33 Well, and it looks like the third is none.

13:36 I haven't tried that yet.

13:38 Yeah.

13:38 It gets a lot of attribute errors, but it's, it's really efficient because it doesn't do

13:42 much work.

13:42 Yeah.

13:44 Yeah.

13:44 People, who maybe don't know FastAPI, the name would indicate it's only for building

13:48 APIs, but you can build web apps with it as well.

13:51 And it's pretty good at that.

13:52 Especially if you check out Michael's courses, he's got like two courses on building web apps

13:59 with the fast eggs.

14:00 I do.

14:01 I do.

14:01 And I also have a, some, some sort of template extensions for it that make it easier.

14:04 All right.

14:05 Data science libraries.

14:06 I don't know how I feel about this one.

14:08 Do you use NumPy?

14:09 Well, yes, but if you use other libraries, then you also use NumPy.

14:12 So yeah, it's like all of these are using NumPy.

14:14 So exactly.

14:16 Exactly.

14:17 Yeah.

14:18 a bunch of other stuff.

14:19 Look at that for unit testing.

14:21 Would it surprise you that pytest is winning?

14:22 No.

14:23 They just overtook Num this year, didn't it?

14:26 yeah.

14:30 So.

14:31 All right.

14:32 ORMs, SQLAlchemy is ahead and then there's, Django ORM.

14:37 Django is tied to Django.

14:39 SQLAlchemy is broad.

14:40 So there's, there's that.

14:41 And then kind of the none of the ORM world is raw SQL at 16%.

14:45 That's pretty interesting.

14:47 Postgres is the most common database by far at 43%.

14:51 Then you have SQLite, which is a little bit of a side case.

14:54 You can use it directly, but it's also used for development.

14:56 And then MySQL, the MongoDB, and then Redis and Microsoft SQL Server.

14:59 So.

15:00 Yeah.

15:00 Huh.

15:01 Actually SQL Server and Oracle are higher than I would have expected, even though, you know,

15:05 but it's okay.

15:06 Well, I think what you're going to find is that there's like certain places, especially

15:10 in the enterprise where it's like, we're a SQL Server shop or we're an Oracle shop and

15:15 our DBAs manage our databases.

15:16 So here you, you put in a, you file a ticket and they'll create a database for you.

15:21 Yeah.

15:21 Or there's a, there's already an existing database and you're connecting to it or something.

15:25 Yep.

15:25 Yep.

15:26 Exactly.

15:26 Exactly.

15:27 All right.

15:28 Let's keep going.

15:28 Cloud platforms.

15:29 AWS is at the top.

15:31 Then you've got Google cloud at 50% and then GCP, Google cloud platform, then Azure, then

15:36 Heroku, DigitalOcean.

15:38 Linode has made it on the list here.

15:39 So, you know, a former or sometimes sponsor of the show, it's good for them.

15:45 And let's see, do you run, how do you run stuff in the cloud?

15:48 Let's skip over this.

15:49 I think a bunch of interesting, a few more interesting things and we'll, we'll call it compared to

15:53 2020 Linux and macOS popularity decreased by 5% while windows usage has risen by 10%.

16:00 Wow.

16:00 Yeah.

16:01 Where the windows people now double more than double the macOS people and are almost rivaling

16:06 the Linux people.

16:06 That's, I think that's just, towards the growth of Python.

16:10 I think, Python's just making it more into everybody's using it sort of thing.

16:16 Yeah.

16:16 And there's also a windows subsystem for Linux.

16:18 It's been coming along pretty strong, which makes windows a more viable, more on have, have

16:24 more parity with your cloud targets.

16:26 Right.

16:26 Yeah.

16:27 And it feels like out in the audience is because of WSL.

16:29 Yeah.

16:29 Maybe.

16:30 Yeah.

16:30 Okay.

16:31 let's see a few more things.

16:33 Documentation.

16:34 It's cool.

16:34 They're asking about like what documentation frameworks you use.

16:36 This one's interesting to me.

16:38 What's your main editor, VS Code or PyCharm?

16:40 I asked this question a lot at the end of talk Python and it feels like VS Code, VS Code,

16:44 VS Code, VS Code is what people are saying all the time, but it's 35% VS Code, 31% PyCharm

16:49 and Brian right there for you.

16:50 7% Vim, but.

16:52 Okay.

16:53 Yeah.

16:54 I just teased you.

16:55 Yeah.

16:56 To be fair, it's both VS Code.

16:59 It's, it's, it's all three.

17:00 Yeah.

17:00 Or top.

17:01 Yeah.

17:01 Top four for me, but yeah.

17:03 Yeah, exactly.

17:04 Well, often you probably just use Vim bindings within the other two, right?

17:07 Yep.

17:08 Yeah.

17:08 Let's see.

17:09 I think also maybe another interesting breakdown is that if you look at the usage scenarios

17:17 or the type of development done with the editors, you get different answers.

17:21 So like for data science, you've got more PyCharm and for web development, I think, hold on,

17:28 I have that right.

17:29 Oh, interesting.

17:30 For data science, you have a lot more VS Code.

17:32 For web development, you have more PyCharm and you have a lot less other in data science,

17:36 AKA Jupyter.

17:38 I suspect it.

17:39 Yeah.

17:39 Yeah.

17:39 Okay.

17:40 How did you learn about your editor?

17:42 By far?

17:43 Or first one here is from a friend.

17:45 So basically friends like push editors, like drug dealers, like gotta get out.

17:49 What are you doing on that thing?

17:50 Get in here.

17:50 No, I think it's like, if I'm, if I'm watching somebody do something cool, I want to do it

17:55 also because it looks helpful.

17:57 Yeah, exactly.

17:57 You sit down next to your friend and you're like, how did you do that?

17:59 That's awesome.

18:00 I want that feature, right?

18:01 I think you're probably right.

18:02 Okay.

18:03 Let's just bust down a few things better.

18:05 One, do you know, or what do you think about the new developer in residence role?

18:09 This is Lucas Schillinga that's going on right now.

18:12 77% are like, the what?

18:14 Never heard of it.

18:18 Maybe like we got, we got a little more advocacy job to do here, but he's been doing a great

18:23 job really speeding things up and sort of greasing the wheels of open source contributions

18:28 and whatnot.

18:29 I, yeah, I'm going to take it like design because if design's done well, nobody knows it's there.

18:35 And yeah, I think the same thing.

18:37 I think if he's doing his job really, really well, most people won't notice things will

18:41 just work.

18:41 Yep.

18:42 Yeah.

18:43 Quick real time follow up.

18:44 Felix out in the audience says, I use PyCharm because of Michael.

18:47 It should have been one of the options in the survey because of Michael.

18:53 Oh, come on.

18:54 That's awesome.

18:55 But no, let's see.

18:57 There's a bunch of questions about that.

18:58 And the final thing I want to touch on is Python packaging.

19:00 Let's see here.

19:03 Which tools related to Python packaging do you use directly?

19:06 And we've talked about poetry.

19:08 We've talked about Flit, pipenv and so on.

19:13 And 81% of the people are like, I use pip for packaging.

19:20 As opposed to Flit or something.

19:22 And then sort of parallel to that is for virtual environment.

19:25 Do you use the, you know, what do you use for virtual environments basically?

19:28 Yeah.

19:29 Like 42% is like, I just use the built-in one or I use the virtual ENV wrapper.

19:34 And then it's like poetry, pipenv talks and so on.

19:39 There's a few.

19:40 I don't know what this is.

19:40 Yeah.

19:42 Well, I'm glad they included that because one of the original questions didn't include

19:47 like the built-in VENV.

19:49 And that's, I think that's what most people use.

19:52 It is.

19:53 Yeah.

19:54 Yeah.

19:54 Absolutely.

19:55 All right.

19:55 Well, I think there's more in my progress bar here.

19:58 This is a super detailed report.

20:00 I'm linking to it in the show notes.

20:02 So just go over there and check it out if you want to see all the cool graphs and play

20:05 with the interactive aspects.

20:06 But thanks again to the PSF and JetBrains for putting this together.

20:09 It's really good to have this insight and these projections of where things are going.

20:13 Yeah.

20:14 Hey.

20:15 All right.

20:15 I'm going to grab the next one.

20:17 Ooh, we did this smoothly this time.

20:19 Nice.

20:19 So JIN config is just JIN actually, but the project's called JIN config.

20:28 And it's kind of a neat little thing.

20:32 It's a different way to think about configuration files.

20:35 So like you have, you have your PyProject or you have .toml files.

20:41 You could have .any files.

20:42 There's a lot of ways to have configuration files.

20:45 But JIN takes the perspective of, oh, well, what if you just, what if you're not really

20:53 into all of that stuff and you're a machine learning person and you just have a whole bunch

20:57 of stuff to configure and you're changing stuff a lot?

21:00 Maybe let's make it easier.

21:01 So I actually came across this because of Vincent Warmerdam.

21:10 He's got an excellent intro to JIN on his comcode site.

21:15 And the idea is you've got this, you just have for a function that you want to, in your

21:22 code, you got some code and you have like part of it that you want configurable.

21:26 You just slap a JIN configurable decorator onto it.

21:30 And then all of the parameters to that function are now something that can show up in a config

21:36 file.

21:36 And it's not in any file.

21:38 I actually don't know the exact syntax, but it just kind of looks like Python.

21:41 It's a, you just have names.

21:45 Like in the, in this example that I'm showing, there's a, there's a file called simulate and

21:51 there's actually a function called simulate and a parameter called in samples.

21:55 And in your config file, you can just say simulate.insamples equals a hundred or something like that.

22:02 Oh, wow.

22:03 This is like, it basically sets the default parameters for all your functions you're calling.

22:08 Yeah.

22:09 The ones that you want to be configurable and you just do that.

22:13 Now it's still where you can still set defaults within your code and, and just like you normally

22:20 would.

22:20 And then, and then you can configure the ones that you want to be different than the defaults.

22:24 So that's a, that's a possibility.

22:26 And there's a whole bunch of, I'm going to expand this a little bit.

22:30 There's a whole bunch of different things that Vincent goes through like required settings.

22:36 You can have a, you can specify like a dot.

22:39 What is it?

22:40 Gin dot required as a function.

22:43 And it makes it so that, or as your parameter, and then it makes it so that your user has to

22:49 put it in their config file.

22:50 That's kind of cool.

22:52 And then you can also, if you don't want somebody to configure something, you can, you can mark

22:58 it as, oh, he's got blacklist the, the end samples.

23:03 So if you want, like in this example, he's got a simulate function with two parameters, random

23:07 funk and end samples.

23:08 You want people to configure the random funk, but you don't want them to touch the end samples.

23:12 You can, you can say, don't do that.

23:15 So, it's kind of neat.

23:17 There's a whole bunch of cool features around it.

23:19 Like, like being able to specify different functions so you can name things and, do

23:25 it around like, like to say like in his example, he's got random functions.

23:29 And if you, you can specify, you know, one of the other, one of the other, like a random

23:35 triangle function, you can specify a function and assign it to that.

23:39 He's got, named things.

23:41 it's a really, it, it's a interesting way to think about configuration and the, the,

23:48 the motivation section of the documentation for gin says, that often modern machine learning

23:55 experiments require just configuring a whole bunch of parameters and, and then you're

24:01 tweaking them and stuff.

24:02 And, and, and to have that be as easy as possible and as simple as possible, because

24:08 it is, and you're going to add some and take some away and things like that because some

24:12 things you want configured and then you decide not to not having to go through a config parser

24:18 system, and just making it as trivial as possible to add parameters.

24:22 I think it's a really cool idea.

24:23 So.

24:24 It is a cool idea.

24:25 It reminds me of like dependency injection a little bit.

24:28 Yeah.

24:28 you know, where you would like configure, say like if somebody asks for a function

24:33 that implements this or that, that goes here, like this is the data access layer to use, or

24:38 here's the ORM I want you to pick this time.

24:40 It's not super common in Python, but it's pretty common in a lot of languages.

24:45 And it feels a little bit like that.

24:46 Can we configure stuff?

24:48 So we have these parameters that we might use for testing or something, but it just, they get

24:53 filled in automatically.

24:54 Yeah.

24:55 Even FastAPI has that for example.

24:56 Yeah.

24:57 Yeah.

24:57 so cool.

24:58 Somebody in the audience says it isn't, isn't Jen used with go.

25:03 and I'm not sure about that, but it, Jen is, is not an officially supported Google

25:09 product, but it's under the Google, like a GitHub repo group.

25:14 So maybe, yeah, maybe it does look very Python like though for the config files.

25:19 And that's cool.

25:20 Yeah.

25:20 Good one.

25:21 All right.

25:21 let me switch back before I swap over.

25:23 Okay, here we go.

25:24 Now this next one, I think universally will be well accepted.

25:30 Although the comment section about it was a little bit rough and tumble.

25:33 Nonetheless, I think it should be universally exciting to everyone.

25:37 And this comes to us from Eduardo Orochena who sent over this article that said the, what's

25:44 it called?

25:44 The Python 311 performance benchmarks are looking fantastic.

25:48 And oh boy, are they?

25:50 So we're talking beta code six months out, right?

25:54 And still, still we've got some pretty neat stuff.

25:56 So this, this links over to an article with that same title by Michael Larabel basically

26:02 says, look, we took a whole bunch of different performance benchmarks for Python and ran them

26:07 on Python 311 beta, which this is the thing I was hinting at.

26:12 Like you might really want to consider this for if you're thinking, should we upgrade from

26:17 nine to 10?

26:18 Maybe you want to just go straight to 11.

26:20 Right.

26:20 I mean, you know, sort of a side thought, Brian, isn't it awesome that the one that

26:25 goes like crazy performance, this one goes to 11.

26:28 All right.

26:33 So they show all the stuff that they're testing on, like AMD Ryzen 16 core 32 with hyper threading

26:39 the motherboard.

26:41 I mean, like down to the motherboard and the chipset and the memory and all that.

26:44 So a pretty decent stuff.

26:47 And then also the build commands and all sorts of things here.

26:50 So pretty repeatable, I think.

26:52 Yeah.

26:53 Rather than just like, hey, I ran it and here's a graph without, without axes or something like

27:00 that.

27:00 So you can kind of click through here and you see some pictures and it says, all right,

27:03 well, there's the Pybench, which I think is like the standard simple one.

27:07 It says, look at this.

27:08 The Python 311 beta is faster than 310, which by the way, was slightly slower than the previous

27:14 ones.

27:14 But you know, what is that?

27:16 10% or something.

27:17 So already actually 16% better.

27:20 So that's already pretty awesome.

27:22 But there's a whole bunch of other ones.

27:24 They did one called Go.

27:25 I don't know what these benchmarks are.

27:27 This does, I don't think this has anything to do with the language Go, just the name of

27:31 the benchmark.

27:31 And then there's two to three and chaos.

27:33 That one sounds like the funnest.

27:34 But if you look at this Go one, this one is like almost 50% faster.

27:39 50% faster.

27:41 That's insane, right?

27:42 Yeah.

27:42 Wow.

27:43 And you come down to the two to three is, these are all estimates, 25, 20% faster,

27:49 say 40% faster with the chaos one.

27:53 Come down to the float operations and Python 310 was already better than the others.

27:57 But this is again, maybe 30% faster.

28:00 And let's roll into the next page.

28:03 You just kind of see this across the board.

28:05 Better, better.

28:06 Some of them are super better.

28:07 Some are like a little bit better, like Pathlib's better, but not crazy.

28:11 Ray tracing is like, again, 40% better here.

28:14 And you keep going.

28:16 There's another one with this huge crypto IAES, some sort of encryption thing.

28:21 So there's just a bunch of, a couple of these are, there's like this one at the end, you're

28:25 like, oh wait, this one got way worse.

28:26 Be careful because it says more is better on this composition.

28:30 I guess is the results here.

28:31 Like how much more computing power do you get per CPU cycle or whatever?

28:36 What is that?

28:37 That's a massive jump.

28:38 You saw a little bit better improvements from 3.8 to 3.9, 3.9 to 3.10.

28:43 But 3.10 to 11 is like a 40%, yeah, 41% better on the beta before it's even final.

28:50 Wow.

28:50 That's pretty exciting, right?

28:51 That's very exciting.

28:52 And actually, I think, I'm curious what some of these negative comments are, but the interesting

28:59 thing is to run lots of different metrics and lots of different benchmarks and having them

29:06 all be, it's faster kind of means that, I mean, I take it as, you know, your mileage may vary,

29:12 but it's going to be better for whatever you're doing, probably.

29:16 Yeah.

29:17 Yeah.

29:17 Yeah.

29:17 It feels like this is a thing you could just install and things get better.

29:20 The negative comments are mostly like, well, if Python was so slow, it could be made this

29:25 faster than Python is a crappy language.

29:26 It's pretty much, I've summed up like 65 comments right there.

29:31 By the way, so I interviewed Guido Van Rassam and Mark Shannon a little while ago about

29:39 this whole project about making Python five times, not 40%, but five times faster.

29:43 And the goal is to make it a little bit faster like this, each release for five releases in

29:47 a row.

29:48 And because of compounding, that'll get you to like 5%.

29:51 So it looks like they're delivering, which is awesome.

29:53 Yeah.

29:53 This is good.

29:54 Yeah.

29:55 Well, cool.

29:55 All right.

29:56 Yeah.

29:57 I think that's it for all of our items.

29:59 Yeah.

30:00 Got any extras?

30:01 no, I was going to pull up the, so yeah, the, the, this one goes to 11.

30:06 If people don't know that that's a spinal tap reference.

30:08 Yeah, exactly.

30:12 All right.

30:13 I got a few extras to throw out real quick.

30:15 Python three, 10, five is out with a bunch of bug fixes.

30:19 Like what happens if you create an F string that doesn't have a closing curly and just a

30:23 bunch of crashes and bug fixes.

30:25 So if you've been running into issues, you know, maybe there's a decent amount of stuff in

30:29 the changelog here.

30:29 Nice.

30:30 People can check that out.

30:31 Also real quick, people might, if they're on a Mac, they might check out Raycast, which

30:36 is a replacement for the command space spotlight thing that has like all these developer plugins.

30:41 So you can do like interact with your GitHub repo through command space and stuff.

30:46 You can create a lot of things.

30:48 And there's a bunch of extensions.

30:49 like, this thing's free, at least for not for team, if you're not on a team, but there's a bunch of different, things you can get that are full, like managing

30:58 processes, doing searches, VS Code project management from command space and whatnot.

31:04 So I'm going to do a lot of things.

31:05 I'm going to do a lot of things.

31:05 I'm going to do a lot of things.

31:06 I'm going to do a lot of things.

31:07 I'm going to do a lot of things.

31:07 I'm going to do a lot of things.

31:08 I'm going to do a lot of things.

31:09 I'm going to do a lot of things.

31:09 I'm going to do a lot of things.

31:10 I'm going to do a lot of things.

31:11 I'm going to do a lot of things.

31:12 I'm going to do a lot of things.

31:13 I'm going to do a lot of things.

31:14 I'm going to do a lot of things.

31:15 I'm going to do a lot of things.

31:16 I'm going to do a lot of things.

31:17 I'm going to do a lot of things.

31:18 I'm going to do a lot of things.

31:19 I'm going to do a lot of things.

31:20 I'm going to do a lot of things.

31:21 I'm going to do a lot of things.

31:22 I'm going to do a lot of things.

31:23 I'm going to do a lot of things.

31:24 I'm going to do a lot of things.

31:25 I'm going to do a lot of things.

31:26 I'm going to do a lot of things.

31:27 I'm going to do a lot of things.

31:28 which ties really well back to the PSF survey.

31:30 We talked about, well, what framework do you use?

31:32 What data science framework do you use?

31:34 Or what web framework do you want to use?

31:36 Django or Flask or FastAPI or what?

31:39 So here's one that is a pretty interesting analysis.

31:42 And the title is, why wouldn't you choose Parrot for your next application?

31:46 Not a framework, but literally a Parrot.

31:48 And this is compared to machine learning.

31:51 So it has like this breakdown of features, like a featured table.

31:56 And it has a parrot, which literally just has a picture of a parrot.

31:58 And this is machine learning algorithms with a neural network.

32:00 And then it lists off the features.

32:02 Learns random phrases.

32:03 Check, check.

32:04 Doesn't understand anything about what it learns.

32:08 Check, check.

32:09 Occasionally speaks nonsense.

32:11 Check, check.

32:12 It's a cute birdie parrot.

32:13 Check, fail.

32:15 Why wouldn't you choose this, Brian?

32:19 This is funny.

32:21 I love it.

32:22 Yeah, it's pretty good.

32:24 Pretty good stuff.

32:25 I actually reminds me of like, I have to pull up this article.

32:28 So I was reading about some machine learning stuff to try to get models like even closer

32:33 and closer to reality.

32:34 There's a whole bunch of tricks people do.

32:36 And then, and then there's some analysis of like, sometimes it's actually not doing anything

32:42 more than just a linear regression.

32:44 So, yeah.

32:45 Try simple for an if statement.

32:47 Yeah.

32:48 Yeah, yeah, yeah, yeah.

32:49 For sure.

32:50 They're using artificial intelligence to make the computer decide.

32:53 No, it's an if statement.

32:54 Like, it's just computers deciding things the old fashioned way.

32:58 Yeah, yeah.

32:59 So.

32:59 Awesome.

33:00 All right.

33:00 Well, thanks for being here.

33:01 Thank you.

33:02 Thanks everyone for listening.

Back to show page