Slide 1

Slide 1 text

Copyright © 2016 Russel Winder 1 Fast Python? Don’t Bother Russel Winder [email protected] https://www.russel.org.uk @russel_winder

Slide 2

Slide 2 text

Copyright © 2016 Russel Winder 2 There is a rumour I only come to PyCon UK to talk about languages other than Python…

Slide 3

Slide 3 text

Copyright © 2016 Russel Winder 3 …this is not true…

Slide 4

Slide 4 text

Copyright © 2016 Russel Winder 4 …well not entirely.

Slide 5

Slide 5 text

Copyright © 2016 Russel Winder 5 A gentle rant, but…

Slide 6

Slide 6 text

Copyright © 2016 Russel Winder 6 …a bit of a rant nonetheless.

Slide 7

Slide 7 text

Copyright © 2016 Russel Winder 7 Python is… ● A dynamically typed (or not) language. ● Quite popular, in data science, and data visualisation. ● Quite popular for sys. admin. ● Quite popular for Web-y stuff. ● Having it’s development driven by IDEs. Type signatures.

Slide 8

Slide 8 text

Copyright © 2016 Russel Winder 8 Slow

Slide 9

Slide 9 text

Copyright © 2016 Russel Winder 9 Python is not… ● A high performance computational language. ● A language in which you can write parallel programs.

Slide 10

Slide 10 text

Copyright © 2016 Russel Winder 10

Slide 11

Slide 11 text

Copyright © 2016 Russel Winder 11 Maybe the GIL is a good thing, it stops us using Python when we shouldn’t.

Slide 12

Slide 12 text

Copyright © 2016 Russel Winder 12 Why?

Slide 13

Slide 13 text

Copyright © 2016 Russel Winder 13 Parallelism

Slide 14

Slide 14 text

Copyright © 2016 Russel Winder 14 So how to do computation? ● Cython ● Numba ● NumPy

Slide 15

Slide 15 text

Copyright © 2016 Russel Winder 15 Cython ● Write Python and annotate the code to make it appear like C so it is actually C by source-to-source translation. Hats off to Pyrex.

Slide 16

Slide 16 text

Copyright © 2016 Russel Winder 16 Why not just write C if you want to write C?

Slide 17

Slide 17 text

Copyright © 2016 Russel Winder 17 Because C is a programming language for writing operating systems, not applications?

Slide 18

Slide 18 text

Copyright © 2016 Russel Winder 18 What we want is Fortran or even FORTRAN.

Slide 19

Slide 19 text

Copyright © 2016 Russel Winder 19 Or not.

Slide 20

Slide 20 text

Copyright © 2016 Russel Winder 20 Numba ● Write Python code and decorate with decorator so as to perform non-Python translation via LLVM to native code.

Slide 21

Slide 21 text

Copyright © 2016 Russel Winder 21 Does Python really have native code semantics?

Slide 22

Slide 22 text

Copyright © 2016 Russel Winder 22 Does RPython really have native code semantics?

Slide 23

Slide 23 text

Copyright © 2016 Russel Winder 23 No

Slide 24

Slide 24 text

Copyright © 2016 Russel Winder 24 NumPy ● And the whole SciPy, Pandas, etc. kit and caboodle. ● A C subsystem, providing opaque data types and operations well integrated with Python as an API.

Slide 25

Slide 25 text

Copyright © 2016 Russel Winder 25 It’s just a C system with a nice API. Lots of niceness to the API.

Slide 26

Slide 26 text

Copyright © 2016 Russel Winder 26 Is C good enough for computation in the modern era?

Slide 27

Slide 27 text

Copyright © 2016 Russel Winder 27 No

Slide 28

Slide 28 text

Copyright © 2016 Russel Winder 28 Why?

Slide 29

Slide 29 text

Copyright © 2016 Russel Winder 29 Parallelism

Slide 30

Slide 30 text

Copyright © 2016 Russel Winder 30 Multi-multicore processors GPGPU

Slide 31

Slide 31 text

Copyright © 2016 Russel Winder 31 OpenCL Vulkan CUDA

Slide 32

Slide 32 text

Copyright © 2016 Russel Winder 32 Actors CSP Dataflow Data Parallelism

Slide 33

Slide 33 text

Copyright © 2016 Russel Winder 33 Parallel Processing ● Threads and thread pools: – C – but very low level. – C++ – better than C. – Java: Akka, Quasar, Hadoop, Apache Spark, GPars. – D – actors and data parallelism. ● Partitioned Global Address Space (PGAS): – Chapel – X10 There are man, many more: Pony, Nim, etc.

Slide 34

Slide 34 text

Copyright © 2016 Russel Winder 34 Where does Python fit in?

Slide 35

Slide 35 text

Copyright © 2016 Russel Winder 35 It doesn’t for the computation…

Slide 36

Slide 36 text

Copyright © 2016 Russel Winder 36 …but there is a way forward:

Slide 37

Slide 37 text

Copyright © 2016 Russel Winder 37 Microservices Architecture

Slide 38

Slide 38 text

Copyright © 2016 Russel Winder 38 Processes communicating over a network. Processes on same computer communicating using inter-process communication.

Slide 39

Slide 39 text

Copyright © 2016 Russel Winder 39 Processes communicating is the only way pure Python code can create parallelism so it must be Pythonic.

Slide 40

Slide 40 text

Copyright © 2016 Russel Winder 40 Intermix Python processes with non-Python ones.

Slide 41

Slide 41 text

Copyright © 2016 Russel Winder 41 Intermix: ● Python ● C ● C++ ● Rust ● D ● Chapel

Slide 42

Slide 42 text

Copyright © 2016 Russel Winder 42 Peek at D and Chapel. https://github.com/russel/Pi_Quadrature

Slide 43

Slide 43 text

Copyright © 2016 Russel Winder 43 Follow Up… Short hands-on workshop: Monday 2016-09-19T14:30+01:00 Room A

Slide 44

Slide 44 text

Copyright © 2016 Russel Winder 44 Fast Python? Don’t Bother Russel Winder [email protected] https://www.russel.org.uk @russel_winder