多线程的使用

文章介绍了Python中的多线程概念,包括通过`threading.Thread`创建线程以及自定义线程类的方法。同时,展示了如何使用`ThreadPoolExecutor`进行线程池管理,实现多个页面数据的并发抓取,提高程序效率。
摘要由CSDN通过智能技术生成
多线程的使用
# 进程、线程
# 进程是资源单位,每一个进程至少要有一个线程
# 线程是执行单位

# if __name__ == '__main__':
#     print('hello')

# 多线程实现方法一
from threading import Thread # 多线程

def func():
    for i in range(1000):
        print('func',i)

if __name__ == '__main__':
    t = Thread(target=func) #创建线程并给线程安排认为
    t.start() # 多线程状态为可以开始工作状态,具体的执行时间由CPU决定
    for i in range(1000):
        print('main',i)

# 方法二

# class MyThread(Thread):
#     def run(self):  # 固定的 ->当线程被执行之后,被执行的就是run
#         for i in range(1000):
#             print('子线程',i)
#
#
# if __name__ == '__main__':
#     t = MyThread()
#     t.start() # 开启线程
#     for i in range(1000):
#         print('主线程',i)


# 新发地实战
# 1.如何提取单个页面的数据
# 2.上线程池,多个页面同时抓取

import requests
from concurrent.futures import ThreadPoolExecutor

def download_one_page(url):
    print(url)
    response = requests.post(url, data=kw)
    data1 = response.json()['list']
    for i in data1:
        print(i)
    # response.encoding='UTF-8'
    # print(response.text)
    pass
if __name__ == '__main__':
    # download_one_page('http://www.xinfadi.com.cn/getPriceData.html')

    with ThreadPoolExecutor(50) as t:
        for i in range(1,10):
            kw = {
                'limit': '20',
                'current': i,
            }
            t.submit(download_one_page,f'http://www.xinfadi.com.cn/getPriceData.html')
        pass
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值