What’s New in Intel Python Update 2? Share your comment!

python cloud

The 2nd update to Intel Python (1.2) came out in February 2017. As well as updates to many packages there are 17 new Python packages included. These have been selected by Intel and where possible optimized to work with the Intel Math Kernel Library (Intel MKL), Intel Thread Building Blocks (Intel TBB) and Intel Integrated Performance Primitives (Intel IPP).

So what are these new packages? Here’s the list taken from the Python release notes (link later below), where I’ve looked at each one to see what it does.

Note that many were written in C/C++ and these packages provide a Python interface.

Appnope

Disable the OS X App Nap feature. If you are in the middle of a long computation on a Mac the last thing you want is your computer to switch into energy saving mode. So do this to disable it.

While this below will re-enable it.

Boost

Yes it’s that Boost- the very well-known C++ library. This doesn’t import all of Boost, just the bits that are in Boost.Python. There’s a very useful article you should read on the subject.

Caffe

This is a deep learning framework, useful if you are implementing computer vision. On a GPU it can process 60 million images per day.

Gflags

Formally known as Google Command line flags, it’s a handy library for parsing command line parameters and also includes an API. It can handle flags read from a flagfile and from environmental variables. There’s also another package python-gflags which seems to be the same only written in Python.

Glog

Another Google library this is for logging and if it detects gflags is present it will make use of it.

h5py

This library supports the HDF5 (Hierarchical Data Format version 5). It’s a convenient format for storing very large amounts of data on disk (we’re talking Terabytes!) as if it were a NumPy array. Thousands of datasets can be stored in a single file, categorized and tagged however you want.

icu

This library is International Components for Unicode. Python 3 works with Unicode but this is for both Python 2 and 3. It provides several modules for string and text, date and time handling and others.

Jpeg

No prizes that this is for the JPEG/JPG image format. This is (I’m guessing a Python interface) to the C library that implements JPEG image encoding, decoding, and transcoding.

Leveldb

This is an on on-disk key-value store that stores keys and values in arbitrary byte arrays, and data is sorted by key. It supports batching writes, forward and backward iteration, and compression of the data via Google’s Snappy compression library which is another package new in this update. There’s also thread-safe Python bindings in another package python-leveldb.

Libtiff

LibTIFF is a library for supporting the Tagged Image File Format (TIFF). It can read and write TIFF on 32 and 64 bit machines. TIFF is one of those uncommon graphic formats unless you are creating software for scanning, word processing or OCR.

Lmdb

Short for Lightning Memory-mapped DataBase, LMDB performs like a pure in-memory database but persists data to disk. It’s a fully transactional and multi-threaded key-value store.

Networkx

NetworkX is a Python language software package for the creation, manipulation, and study of the structure, dynamics, and functions of complex networks. Here Network means a graph with nodes and edges including a Directed Graph. A node can be any hashable object not just a string or integer.

Pillow

Pillow is a fork of PIL, the Python Imaging Library. It was created because the author felt that development for PIL was stagnating.

Prompt_toolkit

Prompt_toolkit is a library for building interactive command lines and terminal applications. It includes multi-line editing, advanced code completion and syntax highlighting while inputting plus other features.

ruamel_yaml

Less popular than JSON and XML, YAML is another configuration serialization language. The package ruamel_yaml is a YAML 1.2 loader/dumper package for Python derived from PyYAML.

Scikit-image

This adds a set of image processing routines for SciPy, complementing NumPy, SciPy and pandas.

Theano

Developed primarily by academics it’s long overdue to be added. Theano has a language to represent mathematical expressions and manipulate them, a compiler to create functions to compute values for these expressions, and a library that will execute these functions when evaluated on numeric values. It is tightly integrated with NumPy and can use a GPU for very fast computations.
I’m guessing that the delay was to add integration with the various Intel libraries.

wcwidth

This is a Python library that measures the width of Unicode strings rendered to a terminal. it makes calls to POSIX functions to get the width values of a Unicode char or string.

Conclusion

It’s an interesting collection of packages. You can read the various release notes. These include links to the website for each of the packages.

Posted on March 23, 2017 by David Bolton, Slashdot Media Contributing Editor