summaryrefslogtreecommitdiff
path: root/Programming_With_Java_A_Primer/chapter12.ipynb
diff options
context:
space:
mode:
Diffstat (limited to 'Programming_With_Java_A_Primer/chapter12.ipynb')
-rw-r--r--Programming_With_Java_A_Primer/chapter12.ipynb231
1 files changed, 231 insertions, 0 deletions
diff --git a/Programming_With_Java_A_Primer/chapter12.ipynb b/Programming_With_Java_A_Primer/chapter12.ipynb
new file mode 100644
index 00000000..ea0f31a7
--- /dev/null
+++ b/Programming_With_Java_A_Primer/chapter12.ipynb
@@ -0,0 +1,231 @@
+{
+ "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": {}
+ }
+ ]
+} \ No newline at end of file