首页 编程教程正文

仅供参考和学习,python多线程查询天气情况

piaodoo 编程教程 2020-02-22 22:04:56 1003 0 python教程

本文来源吾爱破解论坛

仅供参考和学习,python多线程查询天气情况
仅供参考和学习,python多线程查询天气情况
[Python] 纯文本查看 复制代码

#天气查询例子

import requests
import json
import re
import threading
import time
from multiprocessing.dummy import Pool as ThreadPool #多线程


def get_weather(city):
    url=f"https://wthrcdn.etouch.cn/weather_mini?city={city}"
    try:
        requests.packages.urllib3.disable_warnings() #取消警告报错 (提示警告InsecureRequestWarning的问题处理)
        html=requests.get(url, verify=False).json()  # 请求API接口,取消了HTTPS验证
        dates=html['data']['forecast'][0]
        wind = re.findall("\<\!\[CDATA\[(.*?)\]\]\>", dates["fengli"], re.S)[0]  # 正则获取风力大小
        #print(dates)
        print('\n')
        print('-----------------------------------')
        print(f"城市:{city}")
        print(f"日期:{dates['date']}")
        print(f"最高温度:{dates['high']}")
        print(f'风力大小:{wind}')
        print(f"最低温度:{dates['low']}")
        print(f"风向:{dates['fengxiang']}")
        print(f"天气:{dates['type']}")
        print('-----------------------------------')
        print('\n')
    except:
        print(f"获取{city}天气情况失败!")



def get_weather2(url):
    try:
        requests.packages.urllib3.disable_warnings() #取消警告报错 (提示警告InsecureRequestWarning的问题处理)
        html=requests.get(url, verify=False).json()  # 请求API接口,取消了HTTPS验证
        dates=html['data']['forecast'][0]
        wind = re.findall("\<\!\[CDATA\[(.*?)\]\]\>", dates["fengli"], re.S)[0]  # 正则获取风力大小
        #print(dates)
        print('\n')
        print('-----------------------------------')
        print(f"日期:{dates['date']}")
        print(f"最高温度:{dates['high']}")
        print(f'风力大小:{wind}')
        print(f"最低温度:{dates['low']}")
        print(f"风向:{dates['fengxiang']}")
        print(f"天气:{dates['type']}")
        print('-----------------------------------')
        print('\n')
    except:
        print(f"获取天气情况失败!")




def get_thread():
    threads=[]
    city_data=[
        '深圳','广州','上海','赣州','北京','天津','南京','大理','武汉','长沙','九江'
    ]
    num=range(len(city_data))
    #print(num)
    for i in num:
        t=threading.Thread(target=get_weather,args=(city_data[i],))
        threads.append(t)

    for i in num:
        threads[i].start()
        time.sleep(0.5)

    for i in num:
        threads[i].join()

    print("获取城市天气情况完成!")




def get_thread2():
    urls=[]
    city_data=[
            '深圳','广州','上海','赣州','北京','天津','南京','大理','武汉','长沙','九江'
        ]
    for data in city_data:
        url=f'https://wthrcdn.etouch.cn/weather_mini?city={data}'
        urls.append(url)
    print(urls)
    try:
        # 开4个 worker,没有参数时默认是 cpu 的核心数
        pool = ThreadPool()
        results = pool.map(get_weather2,urls)
        pool.close()
        pool.join()
        print("获取城市天气情况完成!")
    except:
        print("Error: unable to start thread")


get_thread()
get_thread2()



发帖不易,有帮助的话,麻烦贵手给个热心,给个赞!
有问题欢迎交流!

版权声明:

本站所有资源均为站长或网友整理自互联网或站长购买自互联网,站长无法分辨资源版权出自何处,所以不承担任何版权以及其他问题带来的法律责任,如有侵权或者其他问题请联系站长删除!站长QQ754403226 谢谢。

有关影视版权:本站只供百度云网盘资源,版权均属于影片公司所有,请在下载后24小时删除,切勿用于商业用途。本站所有资源信息均从互联网搜索而来,本站不对显示的内容承担责任,如您认为本站页面信息侵犯了您的权益,请附上版权证明邮件告知【754403226@qq.com】,在收到邮件后72小时内删除。本文链接:https://www.piaodoo.com/7489.html

搜索