I have two threads, one running min() and the other running max() over the same list. I'm getting some mysterious results which I'm having trouble debugging. Are min() and max() thread-safe, or am I doing something fundamentally silly by having them walk over the same list simultaneously?
My code is as follows. Is there anything obviously wrong with it? import threading, time class MMThread(threading.Thread): def __init__(self, data, func, target, where): super(MMThread, self).__init__() self._data = data self._func = func self._target = target self._where = where def run(self): self._target[self._where] = self._func(self._data) def minmax(seq): result = [None, None] t1 = MMThread(seq, min, result, 0) t2 = MMThread(seq, max, result, 1) t1.start() t2.start() # Block until all threads are done. while any([t1.isAlive(), t2.isAlive()]): time.sleep(0) assert None not in result return tuple(result) -- Steven -- http://mail.python.org/mailman/listinfo/python-list