zoukankan      html  css  js  c++  java
  • day 33 线程池有关的

    # cpu 的核心数
    # import os
    # print(os.cpu_count()) #
    # 爬虫的进程和线程的应用
    # 第一步 虚拟一个浏览器下载 在cmd 里输入 pip install requests 会下载并安装成功后
    # requests 意思就下载网站的源代码 没有解析的功能
    # import requests
    # response = requests.get('https://www.python.org')
    # # print(response) #
    # # 结果:<Response [200]> 只是内容网站内容并不会给解析
    # print(response.text) # 类型字符串 就是源代码
    # # =================================
    # 题目 解析网址的长度
    # import requests
    # from threading import current_thread # 什么意思
    # urls = ['https://www.python.org',
    # 'https://www.baidu.com',
    # 'https://www.jd.com',
    # 'https://www.tmall.com',]
    # def get(url):
    # print('%s GET %s'%(current_thread().getName(),url)) #谁在拿到谁
    # ##### current_thread().gernName() 好像是
    # response = requests.get(url)
    # if response.status_code == 200: #固定的 下载200才算成功
    # return {'url':url,'text':response.text}
    ### get(url) 是拿到网址 和内容 返回值给下边prase函数的上传参数 res
    # def prase(res): #解析
    # print('%s GET %s'%(current_thread().getName(),res['url']))
    # # ##print('[%s] prase res [%s]'%(res['url'],res['text'])) # ##和下边的是一样的 这个暂时不用
    # print('[%s] prase res [%s]'% (res['url'],len(res['text']))) #结果用长度替换字典的网址内容代码
    ##以上两行可以写成一行
    # print('[%s] <%s> (%s)'%(current_thread().getName(),res['url'],len(res['text'])))

    # 方法一 普通
    # for url in urls:
    # res = get(url)
    # prase(res)
    # 结果: 通过循环正常 串着执行 打印出
    # MainThread GET https://www.python.org
    # MainThread GET https://www.python.org
    # [https://www.python.org] prase res [48856]
    # MainThread GET https://www.baidu.com
    # MainThread GET https://www.baidu.com
    # [https://www.baidu.com] prase res [2443]
    # MainThread GET https://www.jd.com
    # MainThread GET https://www.jd.com
    # [https://www.jd.com] prase res [124541]
    # MainThread GET https://www.tmall.com
    # MainThread GET https://www.tmall.com
    # [https://www.tmall.com] prase res [212078]
    #
    # ------------------------------
    #''
    # 异步调用:
    # 提交完任务(为该任务绑定一个回调函数),不用再原地等任务执行完毕拿到结果,可以直接提交下一个任务
    # 一个任务一旦执行完毕就会自动触发回调函数的运行
    #
    # 回调函数的参数是单一的:
    # 回调函数的参数就是它所绑定任务的返回值
    # 进程的用法
    import requests
    from concurrent.futures import ThreadPoolExecutor,ProcessPoolExecutor
    from threading import current_thread
    import time,os
    def get(url):
    print('%s GET %s' %(os.getpid(),url))
    response=requests.get(url)
    time.sleep(3)
    if response.status_code == 200:
    return {'url':url,'text':response.text}
    def parse(obj):
    res=obj.result()
    print('[%s] <%s> (%s)' % (os.getpid(), res['url'],len(res['text'])))
    if __name__ == '__main__':
    urls = [
    'https://www.python.org',
    'https://www.baidu.com',
    'https://www.jd.com',
    'https://www.tmall.com', ]
    t=ProcessPoolExecutor(2)
    for url in urls:
    t.submit(get,url).add_done_callback(parse)
    #add_done_callback(parse) 相当于一个按钮 前面对象结束后自动触发
    # 作用 增加一个回调函数
    t.shutdown(wait=True)
    print('主',os.getpid())



    线程的应用
    import requests
    from concurrent.futures import ThreadPoolExecutor,ProcessPoolExecutor
    from threading import current_thread
    import time
    import os
    def get(url):
    print('%s GET %s' %(current_thread().getName(),url))
    response=requests.get(url)
    time.sleep(3)
    if response.status_code == 200:
    return {'url':url,'text':response.text}
    def parse(obj):
    res=obj.result()
    print('[%s] <%s> (%s)' % (current_thread().getName(), res['url'],len(res['text'])))
    if __name__ == '__main__':
    urls = [
    'https://www.python.org',
    'https://www.baidu.com',
    'https://www.jd.com',
    'https://www.tmall.com',
    ]
    t=ThreadPoolExecutor(2)
    for url in urls:
    # obj = t.submit(get,url)
    # obj.result()
    t.submit(get,url).add_done_callback(parse)
    t.shutdown(wait=True)
    print('主',os.getpid())
  • 相关阅读:
    Java多线程在JavaWeb中的应用
    hibernate,spring,struts的流程以及使用理由
    hibernate如何实现持久化
    ibatis与hibernate有什么区别
    关于导出pdf的例子
    BusyBox
    Android中如何查看内存
    使用PopupWindow实现Menu功能
    ScrollView原理
    eclipse 代码提示时闪退问题
  • 原文地址:https://www.cnblogs.com/xiaoluoboer/p/7943266.html
Copyright © 2011-2022 走看看