Python 3.15 में जोड़े गए sampling profiler Tachyon के साथ multithreading bottleneck को visualise करने और OOP abstraction की performance traps को पकड़ने के उदाहरणों का परिचय

Tachyon क्या है?

Python 3.15 में standard library में जोड़ा जाने वाला sampling-आधारित profiler।
मुख्य बात यह है कि यह free-threading (GIL-free) environment को native रूप से support करता है, जिसे मौजूदा profilers ने नज़रअंदाज़ किया था।

मुख्य विशेषताएँ

  • sampling तरीके से कम overhead
  • सभी threads की एक साथ profiling का support (-a option)
  • चल रहे process से remote attach संभव
  • flamegraph सहित विभिन्न output formats का support
  • async-aware — asyncio programs पर भी लागू

चलाने का तरीका

sudo -E uv run -p 3.15.0a6t python -m profiling.sampling run \  
  -a --flamegraph -o profile.html -r 20khz your_script.py  
# -a       : main thread के अलावा सभी threads की profiling  
# -r 20khz : प्रति सेकंड 20,000 sampling (precision adjust की जा सकती है)  
# output   : flamegraph HTML — लाल columns hot path दिखाते हैं  

वास्तविक उपयोग का उदाहरण — free-threading bottleneck का पता लगाना

optimisation से पहले__getitem__ के ज़रिए Grid access कुल execution time का 75% ले रहा था

<https://blog.changs.co.uk/images/unoptimised-bench.png>;

optimisation के बाद — internal tuple को सीधे access करने में बदलने पर यह 5.32% तक घट गया

<https://blog.changs.co.uk/images/optimised-bench.png>;

यह क्यों महत्वपूर्ण है

  • अब तक free-threading performance problems को केवल "अनुमान से" ढूँढना पड़ता था
  • Tachyon threads कहाँ अटक रहे हैं, यह visual रूप से दिखाने वाला पहला official tool है
  • सामान्य Python developers के लिए भी free-threading performance को सीधे मापने और बेहतर बनाने का रास्ता खुलता है

अभी कोई टिप्पणी नहीं है.

अभी कोई टिप्पणी नहीं है.