import gevent
from gevent import monkey
monkey.patch_all()
import requests
from multiprocessing import Process,Queue
from gevent.pool import Pool
import datetime
def produce_url(q):
for i in range(20):
list = []
for i in range(100):
url = "http://www.baidu.com"
list.append(url)
q.put(list)
def spider(url):
res = requests.get(url)
print(res.status_code)
def consume_url(q,):
pool = Pool(16)
while True:
if not q.empty():
url_list = q.get()
tasks = []
for url in url_list:
tasks.append(pool.spawn(spider,url))
gevent.joinall(tasks)
else:
break
def main():
queue = Queue()
process_list = []
produce_url(queue)
for i in range(4):
p = Process(target=consume_url,args=(queue,))
p.start()
process_list.append(p)
for p in process_list:
p.join()
if __name__ == '__main__':
start_time = datetime.datetime.now().strftime("%c")
main()
end_time = datetime.datetime.now().strftime("%c")
print("开始时间:",start_time)
print("结束时间:",end_time)
Python 多进程 协程爬虫例子(multiprocessing gevent)
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 1.笨栗子就是对多进程中调用协程,pool.apply_async(asyncio.get_event_loop(...
- 多进程 关于多进程爬虫和多进程方面的知识可以参考崔庆才的博客和python文档 协程 关于协程的介绍,强烈推荐大家...
- 目录 只用request爬取 用多线程爬取 用多进程爬取 用协程爬取 用协程+多进程爬取 1. 只用request...
- 从计算机硬件角度: 计算机的核心是CPU,承担了所有的计算任务。一个CPU,在一个时间切片里只能运行一个程序。 从...