parallel programming using python

20
Introduction to Parallel Programming using Python Presented by: Samah Gad July 11, 2013 Friday, July 12, 13

Upload: samah-gad

Post on 06-May-2015

526 views

Category:

Technology


3 download

TRANSCRIPT

Page 1: Parallel programming using python

Introduction to Parallel Programming

using Python Presented by: Samah Gad

July 11, 2013

Friday, July 12, 13

Page 2: Parallel programming using python

Road MapMotivationForking ProcessesThreadsInterprocess Communication - OverviewThe multiprocessing Module - Overview

Friday, July 12, 13

Page 3: Parallel programming using python

Motivation

Problem:Most computers spend a lot of time doing nothing.Majority of the modern CPU’s capacity is often spent in an idle state.

Friday, July 12, 13

Page 4: Parallel programming using python

Motivation -Cont.Solution:

Running more than one program at a time.

Dividing the CPU attention among a set of tasks.Parallel Processing, Multiprocessing, or Multitasking.

Friday, July 12, 13

Page 5: Parallel programming using python

Parallel Processing in Python

Two main ways to run tasks:Process forks Spawned threads

Python built-in tools like: os.fork, threading, queue, and multiprocessing.Third Party domains offers more advanced tools.

Friday, July 12, 13

Page 6: Parallel programming using python

Forking ProcessesTraditional ways to structure parallel tasks.Straight forward way to start an independent program.What is forking?

Copying programs.Python Module - os.fork

Friday, July 12, 13

Page 7: Parallel programming using python

Example 1

Friday, July 12, 13

Page 8: Parallel programming using python

Example 2

Friday, July 12, 13

Page 9: Parallel programming using python

Threads

Another way to start activities running at the same time.Lightweight processes

Run within the same single process.

Friday, July 12, 13

Page 10: Parallel programming using python

Threads - Advantages:

PerformanceSimplicityShared global memoryPortability

Friday, July 12, 13

Page 11: Parallel programming using python

Python ModulesPython Modules:

_thread modulethreading modules

Both modules provide tools for synchronizing access to shared objects with locks.

Friday, July 12, 13

Page 12: Parallel programming using python

The _thread Module

Start new independent threads of execution within a process.Doesn't support OOPPlatform independent module.

Friday, July 12, 13

Page 13: Parallel programming using python

Example 3

Friday, July 12, 13

Page 14: Parallel programming using python

Example 4

Friday, July 12, 13

Page 15: Parallel programming using python

Synchronizing access to shared objects and names

What is the problem? Objects and namespaces in a process that span the life of threads are shared by all spawned threads.

Solution: Threads automatically come with a cross-task communications

Friday, July 12, 13

Page 16: Parallel programming using python

Example 5

Friday, July 12, 13

Page 17: Parallel programming using python

Threading Module

Internally uses the _thread module to implement objects that represent threads and common synchronization tools.Manage threads with high-level class-based objects.

Friday, July 12, 13

Page 18: Parallel programming using python

Interprocess Communication - Overview

Other solutions don’t support cross-program communication Sockets, Pipes, and SignalsEnable performing Inter-Process Communication (IPC)

Friday, July 12, 13

Page 19: Parallel programming using python

The multiprocessing Module - Overview

Provide the best of processes and threads.Platform independent.Uses processes instead of threads.Provide synchronizations tools.Leverage the capacity of multiple processors.

Friday, July 12, 13