加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

Python:从Gevent Greenlet获得价值

发布时间:2020-12-16 22:39:50 所属栏目:Python 来源:网络整理
导读:我正在学习Gevent,但无法获得greenlet中调用的函数返回的值.以下代码: import gevent.monkeygevent.monkey.patch_socket()import geventfrom gevent import Greenletimport urllib2import simplejson as jsondef fetch(pid): response = urllib2.urlopen('h

我正在学习Gevent,但无法获得greenlet中调用的函数返回的值.以下代码:

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()

给我错误:

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

我做错了什么,如何从每个greenlet中获取价值?

最佳答案
根据你想要的http://www.gevent.org/intro.html

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读