[pypy-commit] benchmarks default: Shut down the threads explicitly at the end (for now, needed to get timing reports)
arigo
noreply at buildbot.pypy.org
Sun Mar 30 21:31:51 CEST 2014
Author: Armin Rigo <arigo at tunes.org>
Branch:
Changeset: r243:79769fa4155a
Date: 2014-03-30 21:25 +0200
http://bitbucket.org/pypy/benchmarks/changeset/79769fa4155a/
Log: Shut down the threads explicitly at the end (for now, needed to get
timing reports)
diff --git a/multithread/common/abstract_threading.py b/multithread/common/abstract_threading.py
--- a/multithread/common/abstract_threading.py
+++ b/multithread/common/abstract_threading.py
@@ -1,6 +1,6 @@
from Queue import Queue, Empty, Full
from threading import Thread, Condition, Lock
-import thread
+import thread, atexit, sys
try:
from __pypy__.thread import atomic, getsegmentlimit
@@ -30,14 +30,21 @@
class ThreadPool(object):
def __init__(self):
self.input_queue = Queue()
- for n in range(getsegmentlimit()):
- Worker(self.input_queue)
+ n_workers = getsegmentlimit()
+ self.workers = [Worker(self.input_queue) for i in range(n_workers)]
def add_task(self, func, *args, **kwds):
self.input_queue.put((func, args, kwds))
+ def shutdown(self):
+ for w in self.workers:
+ self.input_queue.put((sys.exit, (), {}))
+ for w in self.workers:
+ w.join()
+
+
_thread_pool = ThreadPool()
-
+atexit.register(_thread_pool.shutdown)
More information about the pypy-commit
mailing list