Python: Getting value from Gevent Greenlet
Question: I'm learning Gevent, but can't get the value returned by the function called
in a greenlet. The following code:

    
    
    import gevent.monkey
    gevent.monkey.patch_socket()
    
    import gevent
    from gevent import Greenlet
    
    import urllib2
    import simplejson as json
    
    def fetch(pid):
        response = urllib2.urlopen('http://time.jsontest.com')
        result = response.read()
        json_result = json.loads(result)
        datetime = json_result['time']
    
        print('Process %s: %s' % (pid, datetime))
        return json_result['time']
    
    def synchronous():
        for i in range(1,10):
            fetch(i)
    
    def asynchronous():
        threads = [Greenlet.spawn(fetch, i) for i in range(10)]
        result = gevent.joinall(threads)
        print [Greenlet.value(thread) for thread in threads]
    
    print('Synchronous:')
    synchronous()
    
    print('Asynchronous:')
    asynchronous()
    

gives me the error:

    
    
    print [Greenlet.value(thread) for thread in threads]
    AttributeError: type object 'Greenlet' has no attribute 'value'
    

What am I doing wrong, and how do I get the value from each greenlet?


Answer: According to <http://www.gevent.org/intro.html> you want

    
    
    def asynchronous():
        threads = [Greenlet.spawn(fetch, i) for i in range(10)]
        result = gevent.joinall(threads)
        print [thread.value for thread in threads]
    

