]> git-server-git.apps.pok.os.sepia.ceph.com Git - s3-tests.git/commitdiff
Use gevent Groups to manage groups of workers.
authorTommi Virtanen <tommi.virtanen@dreamhost.com>
Wed, 20 Jul 2011 16:42:39 +0000 (09:42 -0700)
committerTommi Virtanen <tommi.virtanen@dreamhost.com>
Wed, 20 Jul 2011 18:06:30 +0000 (11:06 -0700)
This mostly adds convenience functions, but it's nice to have.

s3tests/rand_readwrite.py

index 39cf3d6174d695e3a53e6ae1406b45edc7bc3601..1aae304bc7dd4a30e0472935d1772db295e14d9a 100644 (file)
@@ -1,6 +1,7 @@
 #!/usr/bin/python
 
 import gevent
+import gevent.pool
 import gevent.queue
 import gevent.monkey; gevent.monkey.patch_all()
 import optparse
@@ -137,19 +138,21 @@ def main():
         # main work
         print "Using file size: {size} +- {stddev}".format(size=options.file_size, stddev=options.stddev)
         print "Spawning {r} readers and {w} writers...".format(r=options.num_readers, w=options.num_writers)
-        greenlets = []
-        greenlets += [gevent.spawn(writer, options.duration, bucket,
-            name=x,
-            queue=q,
-            file_size=options.file_size,
-            file_stddev=options.stddev,
-            quantity=options.quantity,
-            file_name_seed=r,
-            ) for x in xrange(options.num_writers)]
-        greenlets += [gevent.spawn(reader, options.duration, bucket,
-                name=x,
-                queue=q,
-                ) for x in xrange(options.num_readers)]
+        group = gevent.pool.Group()
+        for x in xrange(options.num_writers):
+            group.spawn(writer, options.duration, bucket,
+                        name=x,
+                        queue=q,
+                        file_size=options.file_size,
+                        file_stddev=options.stddev,
+                        quantity=options.quantity,
+                        file_name_seed=r,
+                        )
+        for x in xrange(options.num_readers):
+            group.spawn(reader, options.duration, bucket,
+                        name=x,
+                        queue=q,
+                        )
         gevent.spawn_later(options.duration, lambda: q.put(StopIteration))
 
         total_read = 0
@@ -192,7 +195,7 @@ def main():
             percent=(100.0*write_failure/max(write_failure+write_success, 1)),
             )
 
-        gevent.joinall(greenlets, timeout=1)
+        group.join(timeout=1)
     except Exception as e:
         print e
     finally: