Anmelden

Python Bytes· Folge 497

#497 Faster than light profiling

Mittwoch, 23. September 2026 · 27 min

MP3

Shownotes

Topics covered in this episode:

• Tachyon: A sampling profiler ships in Python 3.15's stdlib (docs.python.org/3.15/library/profiling.samplin…)

• Python Workers are now generally available on Cloudflare (blog.cloudflare.com/python-workers-ga/?feature…)

• Flet 1.0 - build cross-platform apps in Python (flet.dev/blog/flet-1-0?featured_on=pythonbytes)

• marimo-book: Build static books from marimo notebooks (github.com/ljchang/marimo-book?featured_on=pyt…)

• Extras

• Joke

Watch on YouTube (youtube.com/watch?v=__iKh7BNDgM)

Sponsored by Logfire from Pydantic: pythonbytes.fm/logfire
Connect with the hosts

• Michael: Mastodon (fosstodon.org/@mkennedy) / BlueSky (bsky.app/profile/mkennedy.codes?featured_on=py…) / X (x.com/mkennedy?featured_on=pythonbytes) / LinkedIn (linkedin.com/in/mkennedy/?featured_on=pythonby…)

• Calvin: Mastodon (sixfeetup.social/@calvin?featured_on=pythonbytes) / BlueSky (bsky.app/profile/calvinhp.com?featured_on=pyth…) / X (x.com/calvinhp?featured_on=pythonbytes) / LinkedIn (linkedin.com/in/calvinhp/?featured_on=pythonby…)

• Show: Mastodon (fosstodon.org/@pythonbytes) / BlueSky (bsky.app/profile/pythonbytes.fm) / X (x.com/PythonBytes?featured_on=pythonbytes)

Join us on YouTube at pythonbytes.fm/live (pythonbytes.fm/stream/live) to be part of the audience. Usually Tuesday at 7am PT. Older video versions available there too.

Finally, if you want an artisanal, hand-crafted digest of every week of the show notes in email form? Add your name and email to our friends of the show list (pythonbytes.fm/friends-of-the-show), we'll never share it.

Michael #1: Tachyon: A sampling profiler ships in Python 3.15's stdlib (docs.python.org/3.15/library/profiling.samplin…)

• Python 3.15 adds the profiling package per PEP 799: profiling.tracing (where cProfile moved) and profiling.sampling, the new sampler called Tachyon

• py-spy and Austin exist but copy raw interpreter bytes with no API, so every CPython release risks breaking them; one in the stdlib is a contract to stop breaking profilers

• Defaults: 1 kHz, main thread, wall clock, and a -live top-like view for poking at a slow server

• Output is flexible: pstats, -flamegraph, -diff-flamegraph against a baseline, -heatmap on source lines, -opcodes for specialized bytecode, -gecko for Firefox Profiler with GIL and GC markers

• Profiling modes: wall, cpu, gil (which function is starving my other threads?), and exception, plus -async-aware to see the task graph instead of just select(), -all-threads, and -subprocesses forking a profiler per child

• Near-zero overhead for production; guidance is 10-30 second windows on representative load, and free-threaded builds divide the rate by thread count

• Attach to a running PID, same minor version only; ptrace permissions are the main friction. A 3.14 backport already exists on GitHub

• Caveat: it only sees Python frames, so 90% in calculate() hides NumPy underneath. For native stacks there's Cronon from HRT, 200k samples/sec over DWARF, not yet open source

Calvin #2: Python Workers are now generally available on Cloudflare (blog.cloudflare.com/python-workers-ga/?feature…)

• Python Workers are out of beta - now GA, "first-class" language on Cloudflare's Developer Platform

• No more manual JS interop: bindings (queues, R2, D1, Durable Objects) now work natively in Python, e.g. self.env.QUEUE.send({...})

• Runs on Pyodide (WASM-compiled Python), with real TCP socket support for DB connectivity

• Frameworks supported: FastAPI, Django, Flask; AI libs like OpenAI SDK, LangChain, MCP

• Underlying platform work formalized as PEP 783 (PyEmscripten), after a year of discussion

• Bottom line: write real Python on Cloudflare's edge, no JS glue code required

Calvin #3: Flet 1.0 - build cross-platform apps in Python (flet.dev/blog/flet-1-0?featured_on=pythonbytes)

• Flet hits 1.0 - build Flutter-backed apps from pure Python, no frontend experience needed

• One codebase targets six platforms: iOS, Android, Windows, macOS, Linux, web

• 150+ built-in UI controls, plus support for custom controls / wrapping Flutter packages

• Mobile now supports real Python packages: NumPy, pandas, Pillow, cryptography

• Comes with pytest-based UI testing and an MCP integration for AI coding assistants

• Milestone lands 4+ years after its first PyPI release (Sept 2022) - signals "production ready," not experimental

Michael #4: marimo-book: Build static books from marimo notebooks (github.com/ljchang/marimo-book?featured_on=pyt…)

marimo-book is a Jupyter-Book-style static site generator built specifically for marimo .py notebooks. It ships polished multi-page sites with Material for MkDocs theming, full-text search, dark mode, and code copy, plus a content-hashed incremental build cache that drops rebuilds from 100+ seconds to roughly 3 seconds on real books. Standout extras include anywidget rendering without a kernel, static reactivity for discrete sliders via pre-rendered lookup tables, an opt-in WASM/Pyodide mode per chapter, and per-chapter launch buttons.

• If you've wanted to publish a marimo notebook as a real book or course site without hosting a kernel, marimo-book gives you the static, searchable, fast-loading output you'd expect from Jupyter Book.

• Alpha (0.1.x), but in production: pin marimo-book>=0.1.5,<0.2; the book.yml schema is stable for v0.1, and dartbrains.org/?featured_on=pythonbytes is a real-world user.

• Two-stage build by design: a marimo-aware preprocessor emits plain Markdown + inline HTML, then mkdocs (Material today, zensical tomorrow) renders it. Not a mkdocs plugin, so the shell stays swappable.

• Interactive widgets without a kernel: anywidget Canvas/Three.js/Plotly mounts render statically, and mo.ui.slider with explicit steps gets pre-computed as a static lookup table.

• WASM escape hatch per chapter: set mode: wasm and the chapter routes through marimo's MarimoIslandGenerator, shipping the marimo runtime + Pyodide bundle for full reactivity where you need it.

• Per-chapter launch buttons and extras: readers can jump to molab, GitHub, or a downloaded .py; optional [social], [linkcheck], and [pdf] extras cover OG cards, htmlproofer, and WeasyPrint PDF export.

• Sandboxed notebooks: the sandbox mode reads PEP 723 inline metadata and provisions per-notebook envs via uv for portable builds, at the cost of slower first runs.

Extras

Calvin:

• Great overview of a new feature in Python 3.15 - realpython.com/python315-frozendict/?featured_…

Michael:

• Microsoft Plugs Nearly 1,000 Security Holes in Windows (krebsonsecurity.com/2026/09/microsoft-plugs-ne…)

• I’ll be speaking at PyBay 2026 (pybay.org?featured_on=pythonbytes)

• PyCon NL on October 15 in Utrecht (pycon-nl.org?featured_on=pythonbytes)

• Heading to Europe in October? PyCon NL is October 15th in Utrecht. One day, three tracks, about 350 people. It's an hour by train from Schiphol. There's also a session just for community organizers from groups like PyLadies, PyData, and Django. And the location fits. The Netherlands is where Python itself was born.

Joke: You have homework (youtube.com/watch?v=FG8sUgjBGXs) (no really ;) )

Watch Interview with Big Data engineer in 2026 (youtube.com/watch?v=FG8sUgjBGXs) by Kai Lentit

Anmelden oder registrieren

Jetzt

0:00 / 0:00