gevent-socketio - Python gevent和Queue的问题
本文介绍了gevent-socketio - Python gevent和Queue的问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
访问6个URL,怎么样才能开启两个gevent,当访问结束后,继续访问剩下的4个URL。
下面这段代码,访问两个URL后程序就结束了。
代码
# coding=utf-8
from gevent import monkey; monkey.patch_socket()
import gevent
import requests
import queue
q = queue.Queue()
def get_data(url):
print('GET: %s' %url)
resp = requests.get(url)
data = resp.text
print('%d bytes received from %s.' %(len(data), url))
q.put('http://www.baidu.com')
q.put('http://www.163.com')
q.put('http://www.sougou.com')
q.put('http://www.bing.com')
q.put('http://www.tudou.com')
q.put('http://www.v2ex.com')
gevent_list = []
for i in range(2):
gevent_list.append(
gevent.spawn(get_data, q.get_nowait())
)
gevent.joinall(gevent_list)
解决方案
自己解决了,应该在get_data
方法里面从队列中获取
def get_data():
while not q.empty():
url = q.get_nowait()
print('GET: %s' %url)
resp = requests.get(url)
data = resp.text
print('%d bytes received from %s.' %(len(data), url))
下面spawn的时候就不需要传参数了。
这篇关于gevent-socketio - Python gevent和Queue的问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文