#43 Python string theory, v2
Python Bytes - A podcast by Michael Kennedy and Brian Okken - Luni
Categories:
Python Bytes 43
This episode is brought to you by Rollbar: pythonbytes.fm/rollbar
Brian #1: future-fstrings
- A backport of fstrings to python < 3.6
- Include an encoding string the top of your file (this replaces the utf-8 line if you already have it)
- And then write python3.6 fstring code as usual!
# -*- coding: future_fstrings -*-
thing = 'world'
print(f'hello {thing}')
- In action:
$ python2.7 main.py
hello world
- I’m still undecided if I like this sort of monkeying with the language through the encoding mechanism back door.
Michael #2: The Fun of Reinvention
- Keynote from PyCon Israel
- David Beazley rocks it again
- Let’s take Python 3.6 features and see how far we can push them
- Builds an aspect-oriented constraint system using just 3.6 features
Brian #3: Sound Pattern Recognition with Python
- Using
scipy.io.wavfile.read
to read a .wav file. - Looking for peaks (knocks).
- Using minimum values to classify peaks, and minimum distance between peaks.
- This is an interesting start into audio measurements using Python.
- Would be fun to extend to some basic scope measurements, like sampling with a resolution bandwidth, trigger thresholds, pre-trigger time guards, etc.
Michael #4: PEP 550: Execution Context
- From the guys at magic.io
- Adds a new generic mechanism of ensuring consistent access to non-local state in the context of out-of-order execution, such as in Python generators and coroutines.
- Thread-local storage, such as
threading.local()
, is inadequate for programs that execute concurrently in the same OS thread. This PEP proposes a solution to this problem. - A few examples of where Thread-local storage (TLS) is commonly relied upon:
- Context managers like decimal contexts,
numpy.errstate
, andwarnings.catch_warnings
. - Request-related data, such as security tokens and request data in web applications, language context for
gettext
etc. - Profiling, tracing, and logging in large code bases.
- Context managers like decimal contexts,
- The motivation from uvloop is obviously at work here.
Brian #5: Intro to Threads and Processes in Python
- Beginner’s guide to parallel programming
- Threads and processes are both useful for different kinds of problems.
- This is a good quick explanation of when and where to use either. With pictures!
- Threads
- Like mini processes that live inside one process.
- Share mem space with other threads.
- Cannot run simultaneously in Python (there are some workarounds), due to GIL.
- Good for tasks waiting on IO.
- Processes
- Controlled by OS
- Can run simultaneously
- Good for CPU intensive work because you can use multiple cores.
Michael #6: Alternative filesystems for Python
- PyFilesystem: Filesystem Abstraction for Python.
- Work with files and directories in archives, memory, the cloud etc. as easily as your local drive.
- Uses
- Write code now, decide later where the data will be stored
- unit test without writing real files
- upload files to the cloud without learning a new API
- sandbox your file writing code
- File system backends
- AppFS Filesystems for application data.
- S3FS Amazon S3 Filesystem.
- FTPFS File Transfer Protocol.
- MemoryFS An in-memory filesystem.
- MountFS A virtual filesystem that can mount other filesystems.
- MultiFS A virtual filesystem that combines other filesystems.
- OSFS OS Filesystem (hard-drive).
- TarFS Read and write compressed Tar archives.
- TempFS Contains temporary data.
- ZipFS Read and write Zip files.
- and more
Our news
Michael: switch statement extension to Python: github.com/mikeckennedy/python-switch