1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | #!/usr/bin/env python import matplotlib matplotlib.use('PDF') #NOTE: without it seqfault occures import Queue import logging import math import numpy as np import sys import time import threading from matplotlib import pyplot as plt dbg = logging.debug def plot_figure(queue, dqueue): while True: nfig = queue.get() try: dbg("plot %s" % nfig) x = np.arange(nfig*math.pi/100, 5+nfig*math.pi/100, 0.1); y = np.sin(x) f = plt.figure(nfig) ax = f.add_subplot(111) ax.plot(x, y) ax.set_title(str(nfig)) f.savefig('%s.pdf' % nfig) plt.close(nfig) queue.task_done() dbg("done %s" % nfig) finally: dqueue.put(nfig) def main(): logging.basicConfig( level=logging.DEBUG, format='%(asctime)s %(threadName)s %(message)s') nthreads = int(sys.argv[1]) if len(sys.argv) > 1 else 2 nfig = int(sys.argv[2]) if len(sys.argv) > 2 else 10 # start threads fqueue = Queue.Queue() dqueue = Queue.Queue() threads = [threading.Thread(target=plot_figure, args=(fqueue, dqueue)) for fig in xrange(nthreads)] dbg("start %d threads" % len(threads)) for t in threads: t.daemon = True t.start() dbg("fill queue") for fig in xrange(nfig): fqueue.put(fig) dbg("wait for threads") for _ in xrange(nfig): dqueue.get() dbg("done") if __name__=="__main__": main() |
IyEvdXNyL2Jpbi9lbnYgcHl0aG9uCmltcG9ydCBtYXRwbG90bGliCm1hdHBsb3RsaWIudXNlKCdQREYnKSAjTk9URTogd2l0aG91dCBpdCBzZXFmYXVsdCBvY2N1cmVzCgppbXBvcnQgUXVldWUKaW1wb3J0IGxvZ2dpbmcKaW1wb3J0IG1hdGgKaW1wb3J0IG51bXB5IGFzIG5wCmltcG9ydCBzeXMKaW1wb3J0IHRpbWUKaW1wb3J0IHRocmVhZGluZwoKZnJvbSBtYXRwbG90bGliIGltcG9ydCBweXBsb3QgYXMgcGx0CgpkYmcgPSBsb2dnaW5nLmRlYnVnCgpkZWYgcGxvdF9maWd1cmUocXVldWUsIGRxdWV1ZSk6CiAgICB3aGlsZSBUcnVlOgogICAgICAgIG5maWcgPSBxdWV1ZS5nZXQoKQogICAgICAgIHRyeToKICAgICAgICAgICAgZGJnKCJwbG90ICVzIiAlIG5maWcpICAgICAgICAKICAgICAgICAgICAgeCA9IG5wLmFyYW5nZShuZmlnKm1hdGgucGkvMTAwLCA1K25maWcqbWF0aC5waS8xMDAsIDAuMSk7CiAgICAgICAgICAgIHkgPSBucC5zaW4oeCkKCiAgICAgICAgICAgIGYgPSBwbHQuZmlndXJlKG5maWcpCiAgICAgICAgICAgIGF4ID0gZi5hZGRfc3VicGxvdCgxMTEpCiAgICAgICAgICAgIGF4LnBsb3QoeCwgeSkKICAgICAgICAgICAgYXguc2V0X3RpdGxlKHN0cihuZmlnKSkKICAgICAgICAgICAgZi5zYXZlZmlnKCclcy5wZGYnICUgbmZpZykKICAgICAgICAgICAgcGx0LmNsb3NlKG5maWcpCiAgICAgICAgICAgIHF1ZXVlLnRhc2tfZG9uZSgpCiAgICAgICAgICAgIGRiZygiZG9uZSAlcyIgJSBuZmlnKQogICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgIGRxdWV1ZS5wdXQobmZpZykKICAgICAgICAKZGVmIG1haW4oKToKICAgIGxvZ2dpbmcuYmFzaWNDb25maWcoCiAgICAgICAgbGV2ZWw9bG9nZ2luZy5ERUJVRywKICAgICAgICBmb3JtYXQ9JyUoYXNjdGltZSlzICUodGhyZWFkTmFtZSlzICUobWVzc2FnZSlzJykKICAgIAogICAgbnRocmVhZHMgPSBpbnQoc3lzLmFyZ3ZbMV0pIGlmIGxlbihzeXMuYXJndikgPiAxIGVsc2UgMgogICAgbmZpZyA9IGludChzeXMuYXJndlsyXSkgaWYgbGVuKHN5cy5hcmd2KSA+IDIgZWxzZSAxMAoKICAgICMgc3RhcnQgdGhyZWFkcwogICAgZnF1ZXVlID0gUXVldWUuUXVldWUoKQogICAgZHF1ZXVlID0gUXVldWUuUXVldWUoKQogICAgdGhyZWFkcyA9IFt0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1wbG90X2ZpZ3VyZSwgYXJncz0oZnF1ZXVlLCBkcXVldWUpKQogICAgICAgICAgICAgICBmb3IgZmlnIGluIHhyYW5nZShudGhyZWFkcyldCgogICAgZGJnKCJzdGFydCAlZCB0aHJlYWRzIiAlIGxlbih0aHJlYWRzKSkKICAgIGZvciB0IGluIHRocmVhZHM6CiAgICAgICAgdC5kYWVtb24gPSBUcnVlCiAgICAgICAgdC5zdGFydCgpCgogICAgZGJnKCJmaWxsIHF1ZXVlIikKICAgIGZvciBmaWcgaW4geHJhbmdlKG5maWcpOgogICAgICAgIGZxdWV1ZS5wdXQoZmlnKQoKICAgIGRiZygid2FpdCBmb3IgdGhyZWFkcyIpCiAgICBmb3IgXyBpbiB4cmFuZ2UobmZpZyk6CiAgICAgICAgZHF1ZXVlLmdldCgpCiAgICBkYmcoImRvbmUiKQoKaWYgX19uYW1lX189PSJfX21haW5fXyI6CiAgICBtYWluKCkKICAgICAgICAK
-
upload with new input
-
result: Success time: 0.01s memory: 6656 kB returned value: 1


