Added mp_test_4.py

This commit is contained in:
2018-03-04 09:45:35 +01:00
parent 825e41c3a8
commit 3613c79915
2 changed files with 309 additions and 18 deletions
+9 -18
View File
@@ -8,10 +8,10 @@ import gtk
import multiprocessing
import threading
import time
import random
gtk.gdk.threads_init()
# Any time you connect to any of these signals, they should be
# protected with a threading.Lock or similar.
class ObserverBase(gobject.GObject):
@@ -69,8 +69,7 @@ class Observer(ObserverBase):
raise RuntimeError("Queue had an unknown data type ('"+dataType+"') with value '"+str(data)+"'")
gobject.type_register(Observer)
class Process(gobject.GObject):
__gsignals__ = {
'starting': (gobject.SIGNAL_RUN_LAST,
@@ -93,7 +92,6 @@ class Process(gobject.GObject):
# Create observer
self.observer = Observer(self.queue)
def getObserver(self):
return self.observer
@@ -118,12 +116,8 @@ class Process(gobject.GObject):
# Clean up queue
#self.queue.close()
gobject.type_register(Process)
class CombinedObserver(ObserverBase):
def __init__(self, observers, weights=None):
ObserverBase.__init__(self)
@@ -170,11 +164,8 @@ class CombinedObserver(ObserverBase):
self.emit("errored")
self.lock.release()
gobject.type_register(CombinedObserver)
# A ProgressWorker is responsible for (a) getting the job done and (b)
# reporting progress. Progress is reported via the queue. Fractions
# (from 0 to 1) indicate the proportion of the job that is finished.
@@ -190,7 +181,6 @@ class ProgressWorker():
def go(self):
raise RuntimeError("Worker.go() has not been overridden")
class WorkerExample(ProgressWorker):
def __init__(self):
#Worker.__init__(self)
@@ -206,7 +196,8 @@ class WorkerExample(ProgressWorker):
for i in range(10):
self.queue.put("working on step "+str(i)+"...")
proportion = (float(i)+1)/10
time.sleep(0.75)
slp = random.uniform(0.50, 3.50)
time.sleep(slp)
self.queue.put(proportion)
self.queue.put("done.")
self.queue.put(1.0)
@@ -316,9 +307,9 @@ if __name__ == '__main__':
#time.sleep(0.1)
process3.start()
gtk.main()
process1.join()
process2.join()
process3.join()
#process1.join()
#process2.join()
#process3.join()
print "finished"
sys.exit()