#!/usr/bin/env python
"""
ChannelVersusQueue.py
August 9th, 2007
"""


import stackless
import uthread
import time

flag = 1
check = 0

def consumer(channel):
    global check
    while (1):
        if len(channel) > 0:
            channel.pop(0)
        else:
            stackless.schedule()
        
    
def producer(channels, endTime):
    global flag
    startTime = time.time()
    for i in range(0,1001):
        for channel in channels:
            channel.append(None)
        stackless.schedule()
  
    print "done", time.time() - startTime, i
    flag = 0
    

channels = []    

for n in range(0,100):
    channel = []
    stackless.tasklet(consumer)(channel)
    channels.append(channel)

stackless.tasklet(producer)(channels, time.time() + 60)

while (stackless.getruncount() > 1 and flag):
    stackless.schedule()