#!/usr/bin/python import sys import platform import time from multiprocessing import Process, Queue def run(queue, size): results = [0.] * size queue.put(results) assert(len(sys.argv) > 2) print 'on %s - %s' % (sys.version, ' '.join(platform.uname())) for size in range(0, int(sys.argv[1]), int(sys.argv[2])): q = Queue() s = Process(target=run, args=(q, size)) s.start() t0 = time.time() try: s.join() except KeyboardInterrupt: join_duration = time.time() - t0 print '%(size)d entries: join() ABORTED by user after %(join_duration).2f sec' % locals() continue join_duration = time.time() - t0 join_duration_us = join_duration * 1e6 get_t0 = time.time() vals = q.get(timeout=3.) get_duration = time.time() - get_t0 get_rate = len(vals) / get_duration print '%(size)d entries in flight, join() took %(join_duration_us).2f usec, get() did %(get_rate)f items/sec' % locals()