import Queue
import traceback
import sys
+import os
N_PROCS = None
THREADCACHE = []
+THREADCACHEPID = None
class WorkerThread(threading.Thread):
class QUIT:
class ParallelMap(object):
def __init__(self, maxthreads = None, maxqueue = None, results = True):
global N_PROCS
+ global THREADCACHE
+ global THREADCACHEPID
if maxthreads is None:
if N_PROCS is None:
self.rvqueue = Queue.Queue()
else:
self.rvqueue = None
+
+ # Check threadcache
+ if THREADCACHEPID is None or THREADCACHEPID != os.getpid():
+ del THREADCACHE[:]
+ THREADCACHEPID = os.getpid()
self.workers = []
for x in xrange(maxthreads):
self.destroy()
def destroy(self):
+ # Check threadcache
+ global THREADCACHE
+ global THREADCACHEPID
+ if THREADCACHEPID is None or THREADCACHEPID != os.getpid():
+ del THREADCACHE[:]
+ THREADCACHEPID = os.getpid()
+
for worker in self.workers:
worker.waitdone()
for worker in self.workers: