码迷,mamicode.com
首页 > 编程语言 > 详细

多线程实现并发请求

时间:2019-08-25 01:10:48      阅读:120      评论:0      收藏:0      [点我收藏+]

标签:play   style   cut   表达式   done   lap   onclick   技术   eve   

多线程:不应该开太多,线程之间切换会消耗

编写方式 -直接返回处理

     -通过回调函数处理 v.add_done_callback(done)

线程是CPU的最小工作单元,线程共享工作资源

技术图片
"""
可以实现并发
但是,请求发送出去后和返回之前,中间时期线程空闲
编写方式:
    - 直接返回处理
    - 通过回调函数处理
"""

########### 编写方式一 ###########
"""
from concurrent.futures import ThreadPoolExecutor
import requests
import time

def task(url):
    response = requests.get(url)
    print(url,response)
    # 写正则表达式


pool = ThreadPoolExecutor(7)
url_list = [
    ‘http://www.cnblogs.com/wupeiqi‘,
    ‘http://huaban.com/favorite/beauty/‘,
    ‘http://www.bing.com‘,
    ‘http://www.zhihu.com‘,
    ‘http://www.sina.com‘,
    ‘http://www.baidu.com‘,
    ‘http://www.autohome.com.cn‘,
]
for url in url_list:
    pool.submit(task,url)

pool.shutdown(wait=True)
"""

########### 编写方式二 ###########
from concurrent.futures import ThreadPoolExecutor
import requests
import time

def task(url):
    """
    下载页面
    :param url:
    :return:
    """
    response = requests.get(url)
    return response

def done(future,*args,**kwargs):
    response = future.result()
    print(response.status_code,response.content)

pool = ThreadPoolExecutor(7)
url_list = [
    http://www.cnblogs.com/wupeiqi,
    http://huaban.com/favorite/beauty/,
    http://www.bing.com,
    http://www.zhihu.com,
    http://www.sina.com,
    http://www.baidu.com,
    http://www.autohome.com.cn,
]
for url in url_list:
    v = pool.submit(task,url)
    v.add_done_callback(done)

pool.shutdown(wait=True)
多线程.py

技术图片技术图片技术图片技术图片技术图片技术图片技术图片技术图片技术图片技术图片技术图片技术图片技术图片技术图片

多线程实现并发请求

标签:play   style   cut   表达式   done   lap   onclick   技术   eve   

原文地址:https://www.cnblogs.com/jintian/p/11406498.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!