{ "metadata": { "name": "", "signature": "sha256:0815ba2045ff6b90ad464c5410843a3c00d29eb193c3c9a13b08fcf0be33a42e" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "heading", "level": 1, "metadata": {}, "source": [ "Chapter 12: Multithreaded Programming" ] }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "example 12.1, page no. 211" ] }, { "cell_type": "code", "collapsed": false, "input": [ "\n", "\"\"\"\n", "note: the output will differ from that given in textbook as Threading in Python differs from that in J\n", "\"\"\"\n", "\n", "\n", "def threadA():\n", " for i in range(1, 6):\n", " print \"From Thread A: i = \", i\n", " print \"Exit from A\"\n", "\n", "def threadB():\n", " for i in range(1, 6):\n", " print \"From Thread B: i = \", i\n", " print \"Exit from B\"\n", "\n", "def threadC():\n", " for i in range(1, 6):\n", " print \"From Thread C: i = \", i\n", " print \"Exit from C\"\n", "\n", "thread1 = Thread(target=threadA, args=())\n", "thread2 = Thread(target=threadB, args=())\n", "thread3 = Thread(target=threadC, args=())\n", "\n", "thread1.start()\n", "thread2.start()\n", "thread3.start()" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "From Thread C: i = 1\n", "From Thread C: i = 2\n", "From Thread C: i = 3\n", "From Thread C: i = 4\n", "From Thread C: i = 5\n", "Exit from C\n", "From Thread A: i = 1\n", "From Thread A: i = 2\n", "From Thread A: i = 3\n", "From Thread A: i = 4\n", "From Thread A: i = 5\n", "Exit from A\n", "From Thread B: i = 1\n", "From Thread B: i = 2\n", "From Thread B: i = 3\n", "From Thread B: i = 4\n", "From Thread B: i = 5\n", "Exit from B\n" ] } ], "prompt_number": 18 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "example 12.2, page no. 217" ] }, { "cell_type": "code", "collapsed": false, "input": [ "\n", "\"\"\"\n", "there is no yield or stop function for threads in Python. Demonstrating just sleep() function\n", "\"\"\"\n", "\n", "from threading import Thread\n", "\n", "import time\n", "\n", "def threadA():\n", " for i in range(1, 6):\n", " print \"From Thread A: i = \", i\n", " print \"Exit from A\"\n", "\n", "def threadB():\n", " for i in range(1, 6):\n", " print \"From Thread B: i = \", i\n", " print \"Exit from B\"\n", "\n", "def threadC():\n", " for i in range(1, 6):\n", " print \"From Thread C: i = \", i\n", " time.sleep(0.5)\n", " print \"Exit from C\"\n", "\n", "thread1 = Thread(target=threadA, args=())\n", "thread2 = Thread(target=threadB, args=())\n", "thread3 = Thread(target=threadC, args=())\n", "\n", "thread1.start()\n", "time.sleep(0.5)\n", "thread2.start()\n", "time.sleep(0.5)\n", "thread3.start()\n", "time.sleep(0.5)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "From Thread A: i = 1\n", "From Thread A: i = 2\n", "From Thread A: i = 3\n", "From Thread A: i = 4\n", "From Thread A: i = 5\n", "Exit from A\n", "From Thread B: i = 1\n", "From Thread B: i = 2\n", "From Thread B: i = 3\n", "From Thread B: i = 4\n", "From Thread B: i = 5\n", "Exit from B\n", "From Thread C: i = 1\n" ] } ], "prompt_number": 2 }, { "cell_type": "code", "collapsed": false, "input": [ "#There is no way you can set priority for a thread in Python. Hence, example 12.3 is avoided" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "example 12.4, page no. 225" ] }, { "cell_type": "code", "collapsed": false, "input": [ "\n", "\"\"\"\n", "There is no runnable interface in Python. Will use normal threading instead\n", "\"\"\"\n", "\n", "import threading\n", "class X(threading.Thread):\n", " def run(self):\n", " for i in range(1, 11):\n", " print \"ThreadX: \", i\n", " print \"End of ThreadX\"\n", "\n", "runnable = X()\n", "threadx = Thread()\n", "threadx.start()\n", "print \"End of main thread\"\n", "runnable.run()" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "End of main thread\n", "ThreadX: 1\n", "ThreadX: 2\n", "ThreadX: 3\n", "ThreadX: 4\n", "ThreadX: 5\n", "ThreadX: 6\n", "ThreadX: 7\n", "ThreadX: 8\n", "ThreadX: 9\n", "ThreadX: 10\n", "End of ThreadX\n" ] } ], "prompt_number": 69 } ], "metadata": {} } ] }