Migrated to a queue.Queue in greenpool.

This commit is contained in:
Ryan Williams
2010-01-23 20:15:06 -05:00
parent b93515ca2b
commit de57fcd8ab

View File

@@ -1,9 +1,9 @@
import itertools import itertools
import traceback import traceback
from eventlet import coros
from eventlet import event from eventlet import event
from eventlet import greenthread from eventlet import greenthread
from eventlet import queue
from eventlet import semaphore from eventlet import semaphore
from eventlet.support import greenlets as greenlet from eventlet.support import greenlets as greenlet
@@ -187,7 +187,7 @@ class GreenPile(object):
self.pool = size_or_pool self.pool = size_or_pool
else: else:
self.pool = GreenPool(size_or_pool) self.pool = GreenPool(size_or_pool)
self.waiters = coros.Queue() self.waiters = queue.LightQueue()
self.used = False self.used = False
self.counter = 0 self.counter = 0
@@ -198,7 +198,7 @@ class GreenPile(object):
self.counter += 1 self.counter += 1
try: try:
gt = self.pool.spawn(func, *args, **kw) gt = self.pool.spawn(func, *args, **kw)
self.waiters.send(gt) self.waiters.put(gt)
except: except:
self.counter -= 1 self.counter -= 1
raise raise
@@ -212,7 +212,7 @@ class GreenPile(object):
if self.counter == 0 and self.used: if self.counter == 0 and self.used:
raise StopIteration() raise StopIteration()
try: try:
return self.waiters.wait().wait() return self.waiters.get().wait()
finally: finally:
self.counter -= 1 self.counter -= 1
@@ -222,10 +222,10 @@ class GreenPile(object):
class GreenMap(GreenPile): class GreenMap(GreenPile):
def __init__(self, size_or_pool): def __init__(self, size_or_pool):
super(GreenMap, self).__init__(size_or_pool) super(GreenMap, self).__init__(size_or_pool)
self.waiters = coros.Channel(max_size=self.pool.size) self.waiters = queue.LightQueue(maxsize=self.pool.size)
def next(self): def next(self):
try: try:
return self.waiters.wait().wait() return self.waiters.get().wait()
finally: finally:
self.counter -= 1 self.counter -= 1