Finding performance problems: profiling or logging?

When your software is too slow in production, how can you figure out the source of the problem? One common starting point to improving production observability is logging, and ideally trace-based logging (tracing for short). For example, the OpenTelemetry standard and the libraries and backend services that work with it can help you collect metrics, logs, and traces. Tracing—both within and across processes—is the most general of these, immensely useful for identifying and debugging problems, including performance problems. But there’s […]

Read more

Sorting a Python Dictionary: Values, Keys, and More

# samples.py dictionary_of_dictionaries = { 1: {“first_name”: “Dorthea”, “last_name”: “Emmanuele”, “age”: 29}, 2: {“first_name”: “Evelina”, “last_name”: “Ferras”, “age”: 91}, 3: {“first_name”: “Frederica”, “last_name”: “Livesay”, “age”: 99}, 4: {“first_name”: “Murray”, “last_name”: “Linning”, “age”: 36}, 5: {“first_name”: “Annette”, “last_name”: “Garioch”, “age”: 93},

Read more

Exploring Special Function Parameters

Have you ever come across the forward slash (/) and asterisk (*) symbols in the documentation for your favorite libraries? These represent special parameters, which tell you what kinds of arguments you can use to call a given function. In Python, these parameters can help you ensure that your functions are used correctly. Maybe you’re a regular at Real Python’s weekly Office Hours meetup, or perhaps you’re curious about what happens there. You’ll get a glimpse in this Code Conversation, […]

Read more

Python News: What’s New From July 2022

In July 2022, Python reached for the stars, playing a key role in processing data from the James Webb Space Telescope. After two years of virtual conferences, EuroPython 2022 took place in Dublin, Ireland. Anaconda celebrated its tenth birthday, and Flask achieved a major milestone on GitHub. Two new pre-release versions of Python 3.11 were released, with 3.11.0b5 representing the final beta version. Meanwhile, the Python Package Index (PyPI) introduced a two-factor authentication requirement for maintainers of critical projects. Finally, […]

Read more

Machine Translation and Multilinguality in July 2022

Here is my monthly summary of what I found worth reading on arXiv in the past month. A preprint from JHU studies zero-shot cross-lingual transfer using pretrained multilingual representation and comes to the conclusion that it is an under-specified optimization problem. In other words, with a multilingual representation model, there are potentially many solutions that are good for the source language, but only some of them are good for the target language. In practice, the solution is probably proper training […]

Read more

Python Constants: Improve Your Code’s Maintainability

In programming, the term constant refers to names representing values that don’t change during a program’s execution. Constants are a fundamental concept in programming, and Python developers use them in many cases. However, Python doesn’t have a dedicated syntax for defining constants. In practice, Python constants are just variables that never change. To prevent programmers from reassigning a name that’s supposed to hold a constant, the Python community has adopted a naming convention: use uppercase letters. For every Pythonista, it’s […]

Read more

The best way to find performance bottlenecks: observing production

Your customers are complainin’, your monitors are alertin’, your thumbs are a-twiddlin’—whatever the symptom, the problem is that your application is too slow. And you want to find out why, so you can fix it. You could spin up your application on your laptop, do some benchmarking, and try to find the bottleneck. Sometimes, that’s all it takes, but quite often, local testing tells you nothing useful. For many performance bottlenecks, the only way to identify the problem is to […]

Read more

Python Basics: Finding and Fixing Code Bugs

Everyone makes mistakes—even seasoned professional developers! IDLE is pretty good at catching mistakes like syntax errors and run-time errors, but there’s a third type of error that you may have already experienced. Logic errors occur when an otherwise valid program doesn’t do what was intended. Logic errors cause unexpected behaviors called bugs. Removing bugs is called debugging, and a debugger is a tool that helps you hunt down bugs and understand why they’re happening. Knowing how to find and fix […]

Read more

Asynchronous Tasks With Django and Celery

You’ve built a shiny Django app and want to release it to the public, but you’re worried about time-intensive tasks that are part of your app’s workflow. You don’t want your users to have a negative experience navigating your app. You can integrate Celery to help with that. Celery is a distributed task queue for UNIX systems. It allows you to offload work from your Python app. Once you integrate Celery into your app, you can send time-intensive tasks to […]

Read more

The limits of Python vectorization as a performance technique

Vectorization in Python, as implemented by NumPy, can give you faster operations by using fast, low-level code to operate on bulk data. And Pandas builds on NumPy to provide similarly fast functionality. But vectorization isn’t a magic bullet that will solve all your problems: sometimes it will come at the cost of higher memory usage, sometimes the operation you need isn’t supported, and sometimes it’s just not relevant. For each problem, there are alternative solutions that can address the problem. […]

Read more
1 2 3 761