zoukankan      html  css  js  c++  java
  • 多线程,进程实现并发请求


    '''方式一:线程池的方式'''
    # 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.baidu.com',
    # 'http://www.baidu.com',
    # 'http://www.baidu.com',
    # 'http://www.baidu.com',
    # ]
    #
    #
    # for url in url_list:
    # pool.submit(task,url)
    # pool.shutdown(wait=True)





    '''编写方式二'''

    from concurrent.futures import ThreadPoolExecutor,ProcessPoolExecutor##前面是多线程,后面是多进程
    import requests
    import time


    '''(url,response)当返回一个参数的时候,就会被当做一个整体进行返回,就是一个参数'''
    def task(url):
    '''下载页面'''
    response=requests.get(url)
    # print(url,response)
    # return (url,response)##在这里进行返回值回去,当有返回值的时候,在下面的return_obj里面可以被接收到,就可以打印出来
    return response##在这里进行返回值回去,当有返回值的时候,在下面的return_obj里面可以被接收到,就可以打印出来



    '''arg是放列表和字典的 '''
    def done(return_obj,*args,**kwargs):
    response=return_obj.result()
    # print(response)
    print(response.status_code)###返回状态码
    # print(response.content)
    # print(args)
    # print(kwargs)


    pool=ThreadPoolExecutor(7)


    url_list=[
    'http://www.baidu.com',
    'http://www.baidu.com',
    'http://www.baidu.com',
    'http://www.baidu.com',
    ]


    for url in url_list:
    v=pool.submit(task,url)
    v.add_done_callback(done)##当执行完上面的程序的时候,就会自动执行回调函数
    pool.shutdown(wait=True)
  • 相关阅读:
    quart源码阅读(一)
    Python poll IO多路复用
    Python select IO多路复用
    谁才是真正的垃圾:判断对象的可触及性
    Java的四种引用之强弱软虚
    JVM的基本结构及其各部分详解(二)
    JVM的基本结构及其各部分详解(一)
    java面试笔试题收集
    看懂Class文件的装载流程
    java单例模式
  • 原文地址:https://www.cnblogs.com/yunxintryyoubest/p/10033095.html
Copyright © 2011-2022 走看看