Python 3.14 - Threading Unbound

Wed 08 October 2025

Python 3.14 is released and I’m extremely exited that free-threading is now officially supported! Finally no more GIL, finally able to use all the hundreds of cores on modern servers! Or at least in theory, we'll see how it holds up in practice.

I'm also quite excited for template string literals (t-strings). Better HTML templates? Direct SQL interpolation? I'm looking forward to what the community comes up with.

Many packages already provide free-threaded wheels, including core ML libraries such as numpy, jax and torch. This means it's now easy to parallelize your data pipeline, without any multiprocessing!

To celebrate, I asked Claude to write a simple multi-threaded mandelbrot renderer cum benchmark to test the scaling:

$ ./benchmark_mandelbrot.py --size 768 --max-iter 4096 \
    --region satellite --benchmark

Threads    Time (s)     Speedup    Efficiency
--------------------------------------------------
1          12.7925      1.00       100.00%   
2          6.5261       1.96       98.01%    
4          3.8395       3.33       83.30%    
8          2.5221       5.07       63.40%    
16         2.2243       5.75       35.94% 

Pretty decent scaling even on my laptop, without any effort at optimizing, just standard concurrent.futures.ThreadPoolExecutor.

mandelbrot

Tags: programming, python, concurrency

[?]

Loading comments...

© Julian Schrittwieser. Built using é–‹ęæ. Theme by Giulio Fidente on github. .