Revision: 7012
http://matplotlib.svn.sourceforge.net/matplotlib/?rev=7012&view=rev
Author: efiring
Date: 2009-03-29 03:43:49 +0000 (Sun, 29 Mar 2009)
Log Message:
-----------
Added Karen Tracey's threading_test.py.
Added Paths:
-----------
trunk/matplotlib/unit/threading_test.py
Added: trunk/matplotlib/unit/threading_test.py
===================================================================
--- trunk/matplotlib/unit/threading_test.py (rev 0)
+++ trunk/matplotlib/unit/threading_test.py 2009-03-29 03:43:49 UTC (rev
7012)
@@ -0,0 +1,70 @@
+#! /usr/bin/python
+"""
+Test by Karen Tracey for threading problem reported in
+http://www.mail-archive.com/[email protected]/msg04819.html
+and solved by JDH with svn r7008.
+"""
+
+import os
+import threading
+import traceback
+
+import numpy as np
+from matplotlib.backends.backend_agg import FigureCanvasAgg as FigureCanvas
+from matplotlib.figure import Figure
+
+thread_count = 8
+max_iterations = 50
+exception_raised = False
+
+def png_thread(tn):
+ png_fname = 'out%d.png' % tn
+ vals = 100 + 15 * np.random.randn(10000)
+
+ i = 0
+ excp = None
+ global exception_raised
+ while not exception_raised and i < max_iterations:
+ i += 1
+ png_f = open(png_fname, 'wb')
+
+ try:
+ fig = Figure()
+ ax = fig.add_subplot(111)
+ ax.hist(vals, 50)
+ FigureCanvas(fig).print_png(png_f)
+
+ except Exception, excp:
+ pass
+
+ png_f.close()
+ if excp:
+ print 'png_thread %d failed on iteration %d:' % (tn, i)
+ print traceback.format_exc(excp)
+ exception_raised = True
+ else:
+ print 'png_thread %d completed iteration %d.' % (tn, i)
+
+ os.unlink(png_fname)
+
+def main(tc):
+ threads = []
+ for i in range(tc):
+ threads.append(threading.Thread(target=png_thread, args=(i+1,)))
+
+ for t in threads:
+ t.start()
+
+ for t in threads:
+ t.join()
+
+ if not exception_raised:
+ msg = 'Success! %d threads completed %d iterations with no exceptions
raised.'
+ else:
+ msg = 'Failed! Exception raised before %d threads completed %d
iterations.'
+
+ print msg % (tc, max_iterations)
+
+if __name__== "__main__":
+ main(thread_count)
+
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
------------------------------------------------------------------------------
_______________________________________________
Matplotlib-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/matplotlib-checkins