#226: Teaching Python podcast on the podcast!
Special guests:
Brian #1: DataClass vs NamedTuple vs Object: A Battle of Performance in Python
- Jack Song
- I’ve been using dataclass for a while now and love it. For some reason, I thought I heard there was some performance hit from them, so I was a bit worried before reading this.
- Jack came up with “a performance tests to compare the different size and speed when creating, reading and executing functions for
Object
,NamedTuple
and the newDataClass
introduced in Python 3.7”
Object | NamedTuple | DataClass | |
---|---|---|---|
create | 2.94 µs | 2.01 µs | 2.34 µs |
read property | 24.7 ns | 26.9 ns | 24.7 ns |
nested property | 48.1 ns | 75.8 ns | 52.1 ns |
execute function | 829 ns | 946 ns | 821 ns |
size | 56 bytes | 80 bytes | 56 bytes |
- Marvelous. Dataclass is still awesome. At the very least, it’s on the same order of size and speed as other structures.
- Further questions:
- This was a limited bit of code, and performance metrics always depend on what kind of example code was used. If anyone has info about different performance examples that give wildly different results or even similar results, regarding DataClass, I’d love to hear about it.
Michael #2: Can My Water Cooled Raspberry Pi Cluster Beat My MacBook?
- Did you know there were Raspberry Pi clusters? Amazing.
- Two primary things of interest
- Pi clusters exist!
- All the tools and setup to make the pi cluster nodes run in a grid computing scenario
- Compared against a mediocre HP laptop:
- 10,000 → 1.69 sec
- 100,000 → 74 sec
- 200,000 → 268 sec
- Compared against an Intel MB Air:
- 10,000 → .88 sec
- 100,000 → 83 sec
- 200,000 → 355 sec
- Pi cluster, one node:
- 10,000 → 1.57 sec
- 100,000 → 148 sec
- 200,000 → 646 sec
- Pi cluster, grid computed:
- 10,000 → .65 sec
- 100,000 → 22 sec
- 200,000 → 85 sec
- Ran the same script on my Mac Mini M1 (on Python 3.9.2 Rosetta, single threaded)
- 10,000 → .33 sec
- 100,000 → 24 sec
- 200,000 → 91 sec
Ran the my parallel script on my Mac Mini M1 (on Python 3.9.2 Rosetta, multi-threaded)
- 10,000 → .28 sec
- 100,000 → 7 sec
- 200,000 → 26 sec
- 500,000 → 2m (vs. 9m on the cluster)
Ran the my parallel script on my Alienware sim racing machine (16 core, multi-threaded)
- 10,000 → .27 sec
- 100,000 → 2.7 sec
- 200,000 → 10 sec
- 500,000 → 1m
- Video of the Alienware sound
Kelly #3: There is an app for that!
I am always trying to find time to practice Python and learn more ways to teach Python Basics. I amalways on the go, so having Python Practice online and an online editor is always a plus.
- Programiz a company out of Nepal, has an IOS and Android app for beginner pythonistas
- From “Hello World” to Generators and Decorators
- Original Owners of Programiz: Ranjit Bhatta, Aswin Shrestha and Punit Jajodia
- Swipe, Learn, and Repeat
- Has an editor built in
- Leaderboards
- Quizzes and “Interview Challenges” (paid)
- Newest update with 200+ programs
- Interactive IDE
- FREE, with minimal app advertising
- Paid version as well
- Learn anywhere availability, helps to reduce the Digital Divide
- 826 million learners online due to Covid19
- 50% of those learners do not have a household computer
- 706 million have no at home internet
- The engineering behind the app and its editor function: https://www.programiz.com/blog/online-python-compiler-engineering/
Brian #4: New packaging security funding & NYU
- Sumana Harihareswara
- “New York University – specifically Professor Justin Cappos – and I (Sumana) have successfully asked the US National Science Foundation for a grant to improve Python packaging security. The NSF is awarding NYU $800,000 over two years – from mid-2021 to mid-2023 – to further improve the pip dependency resolver and to integrate The Update Framework further into the packaging toolchain.”
- “NYU researchers and developers will
- Further assess and improve pip’s dependency resolver, following up on the work done in 2020 and making ResolveLib more reusable by other tools in the packaging ecology
- Secure the PyPI-to-user pipeline by integrating TUF support for signed packages throughout PyPI’s clients (we’re targeting conda, pip, and bandersnatch initially)”
- TUF is The Update Framework (TUF) specification,
- From theupdateframework.io:
- “The Update Framework (TUF) helps developers maintain the security of software update systems, providing protection even against attackers that compromise the repository or signing keys. TUF provides a flexible framework and specification that developers can adopt into any software update system.
- From theupdateframework.io:
- ResolveLib “provides a
Resolver
class that includes dependency resolution logic.”. It’s an independent project, but vendored by pip - bandersnatch “is a PyPI mirror client”
Michael #5: Extra x8, hear all about it
- We on amazon and audible (so is Teaching Python)
- Sourcery added skip refactorings. I did major refactoring since, favorite:
url = request.url if request.url else ''
tourl = request.url or ''
- Via Matthew Feickert, it’s easy to become a PSF member and support the PSF
- Beanie adds indexes!
- Pycharm (and other JetBrains IDEs) in the browser via Dave Kirby
- SQLite as a file format comes to Audacity (via Jon Bultmeyer)
- Prayson Daniel shared his Neo4J examples using Neomodel.
- Call for proposals for PyCon Latam just went live
Sean #6: Using Development Containers with VS Code for Students
- One of the big chores at the start of a course is getting everyone set up in the same development environment. Usually takes at least a few classes and nearly impossible to get everyone with the same environment at the end.
- Solution - use Docker images and the Remote-Containers extension to allow students to run a pre-configured container right in VS Code.
- Needs VS Code & Docker Desktop (maybe a remote Docker host could make it even easier?)
- Can deploy directly from a Github repo with persistent storage volumes, default VS Code settings, and even pre-installed packages and environment variables.
- Seems well suited for universities, experienced learners, etc. Also makes it easy to create different environments by assignment or course unit. What if every Talk Python training course had a GitHub container repo with the same starting environment?
Extras:
Kelly:
Sean:
- Repl.it adds Python package caching (and gets a 40% speed boost)
- Home Assistant (actually Nabu Casa) buys ESPHome (makes DIY IoT devices cheap & easy to integrate)
- It’s good to know a Python programmer if you need a vaccine appointment
Joke (in honor of our teachers today):