**PYTHON CENGAE** Question: Switch consumer 1 staring up and consumer o starting, consumer o starting up should be before consumer 1 staring up. CODE BLOCK BELOW:  import time, random from threading import Thread, currentThread, Lock class SharedCell(object): """Shared data for the producer/consumer problem.""" def __init__(self): """Data undefined at startup.""" self.data = -1 self.lock = Lock() def setData(self, data): """Producer's method to write to shared data.""" with self.lock: print("%s setting data to %d" % \ (currentThread().getName(), data)) self.data = data def getData(self): """Consumer's method to read from shared data.""" with self.lock: print("%s accessing data %d" % \ (currentThread().getName(), self.data)) return self.data class Producer(Thread): """A producer of data in a shared cell.""" def __init__(self, cell, accessCount, sleepMax): """Create a producer with the given shared cell, number of accesses, and maximum sleep interval.""" Thread.__init__(self, name = "Producer") self.accessCount = accessCount self.cell = cell self.sleepMax = sleepMax def run(self): """Resets the data in the cell and goes to sleep, the given number of times.""" print("%s starting up" % self.getName()) for count in range(self.accessCount): time.sleep(random.randint(1, self.sleepMax)) self.cell.setData(count + 1) print("%s is done producing\n" % self.getName()) class Consumer(Thread): """A consumer of data in a shared cell.""" def __init__(self, cell, accessCount, sleepMax, consumerID): """Create a consumer with the given shared cell, number of accesses, and maximum sleep interval.""" Thread.__init__(self, name = f"Consumer {consumerID}") self.accessCount = accessCount self.cell = cell self.sleepMax = sleepMax def run(self): """Announce start-up, sleep and write to shared cell the given number of times, and announce completion.""" print("%s starting up\n" % self.getName()) for count in range(self.accessCount): time.sleep(random.randint(1, self.sleepMax)) value = self.cell.getData() print("%s is done consuming\n" % self.getName()) def main(): consumerCount = int(input("Enter the number of consumers: ")) accessCount = int(input("Enter the number of accesses: ")) sleepMax = 4 cell = SharedCell() threads = [] print("Starting the threads") p = Producer(cell, accessCount, sleepMax) c0 = Consumer(cell, accessCount, sleepMax, 0) c1 = Consumer(cell, accessCount, sleepMax, 1) threads.append(p) threads.append(c0) threads.append(c1) for t in threads: t.start() if isinstance(t, Producer): t.join() for t in threads: if not isinstance(t, Producer): t.join() main()

Database System Concepts
7th Edition
ISBN:9780078022159
Author:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Chapter1: Introduction
Section: Chapter Questions
Problem 1PE
icon
Related questions
Question

**PYTHON CENGAE** Question: Switch consumer 1 staring up and consumer o starting, consumer o starting up should be before consumer 1 staring up.

CODE BLOCK BELOW: 

import time, random from threading import Thread, currentThread, Lock class SharedCell(object): """Shared data for the producer/consumer problem.""" def __init__(self): """Data undefined at startup.""" self.data = -1 self.lock = Lock() def setData(self, data): """Producer's method to write to shared data.""" with self.lock: print("%s setting data to %d" % \ (currentThread().getName(), data)) self.data = data def getData(self): """Consumer's method to read from shared data.""" with self.lock: print("%s accessing data %d" % \ (currentThread().getName(), self.data)) return self.data class Producer(Thread): """A producer of data in a shared cell.""" def __init__(self, cell, accessCount, sleepMax): """Create a producer with the given shared cell, number of accesses, and maximum sleep interval.""" Thread.__init__(self, name = "Producer") self.accessCount = accessCount self.cell = cell self.sleepMax = sleepMax def run(self): """Resets the data in the cell and goes to sleep, the given number of times.""" print("%s starting up" % self.getName()) for count in range(self.accessCount): time.sleep(random.randint(1, self.sleepMax)) self.cell.setData(count + 1) print("%s is done producing\n" % self.getName()) class Consumer(Thread): """A consumer of data in a shared cell.""" def __init__(self, cell, accessCount, sleepMax, consumerID): """Create a consumer with the given shared cell, number of accesses, and maximum sleep interval.""" Thread.__init__(self, name = f"Consumer {consumerID}") self.accessCount = accessCount self.cell = cell self.sleepMax = sleepMax def run(self): """Announce start-up, sleep and write to shared cell the given number of times, and announce completion.""" print("%s starting up\n" % self.getName()) for count in range(self.accessCount): time.sleep(random.randint(1, self.sleepMax)) value = self.cell.getData() print("%s is done consuming\n" % self.getName()) def main(): consumerCount = int(input("Enter the number of consumers: ")) accessCount = int(input("Enter the number of accesses: ")) sleepMax = 4 cell = SharedCell() threads = [] print("Starting the threads") p = Producer(cell, accessCount, sleepMax) c0 = Consumer(cell, accessCount, sleepMax, 0) c1 = Consumer(cell, accessCount, sleepMax, 1) threads.append(p) threads.append(c0) threads.append(c1) for t in threads: t.start() if isinstance(t, Producer): t.join() for t in threads: if not isinstance(t, Producer): t.join() main()

Expert Solution
steps

Step by step

Solved in 4 steps with 4 images

Blurred answer
Knowledge Booster
Random access
Learn more about
Need a deep-dive on the concept behind this application? Look no further. Learn more about this topic, computer-science and related others by exploring similar questions and additional content below.
Similar questions
  • SEE MORE QUESTIONS
Recommended textbooks for you
Database System Concepts
Database System Concepts
Computer Science
ISBN:
9780078022159
Author:
Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:
McGraw-Hill Education
Starting Out with Python (4th Edition)
Starting Out with Python (4th Edition)
Computer Science
ISBN:
9780134444321
Author:
Tony Gaddis
Publisher:
PEARSON
Digital Fundamentals (11th Edition)
Digital Fundamentals (11th Edition)
Computer Science
ISBN:
9780132737968
Author:
Thomas L. Floyd
Publisher:
PEARSON
C How to Program (8th Edition)
C How to Program (8th Edition)
Computer Science
ISBN:
9780133976892
Author:
Paul J. Deitel, Harvey Deitel
Publisher:
PEARSON
Database Systems: Design, Implementation, & Manag…
Database Systems: Design, Implementation, & Manag…
Computer Science
ISBN:
9781337627900
Author:
Carlos Coronel, Steven Morris
Publisher:
Cengage Learning
Programmable Logic Controllers
Programmable Logic Controllers
Computer Science
ISBN:
9780073373843
Author:
Frank D. Petruzella
Publisher:
McGraw-Hill Education