首页 > 系统相关 >爬虫 | 多线程、多进程、协程

爬虫 | 多线程、多进程、协程

时间:2024-06-13 16:57:51浏览次数:11  
标签:__ 协程 name 爬虫 range 线程 print 100 多线程

进程和线程

"""
进程中至少有一条线程,线程和进程的开启非常类似,这里就展示线程
"""
from threading import Thread
from multiprocessing import Process

# 第一种开启的方法就是直接def
def func(name):
    for i in range(100):
        print(name, i)

if __name__ == '__main__':
    t = Thread(target=func, args=('T1',))  # 创建线程,布置任务,传入参数(注意这里的参数必须是元素,里面加逗号)
    t.start()  # 告诉线程可以开始工作了

    # 下面是主任务
    for n in range(100):
        print('主任务', n)


# 第二种方法是类继承
class MyThread(Thread):
    def __init__(self, name):   # 这里就是通过构造函数来传入参数name
        Thread.__init__(self)  #  >>> 等价于super().__init__(),先继承父类的东西
        self.name = name

    def run(self):
        for i in range(100):
            print(self.name, i)

if __name__ == '__main__':
    t = MyThread("T1")     # 创建一个实例对象,并传参T1
    t.start()              # 告诉线程可以开始工作了,这里如果是t.run()是不对的,这是在调用方法,实际上是在主线程中同步执行的,而非并发

    # 下面是主任务
    for n in range(100):
        print('主任务', n)

进程池和线程池

from concurrent.futures import ThreadPoolExecutor


def fn(name):
    for i in range(1000):
        print(name, i)

# main
# 创建线程池,并指定线程池大小为50workers
with ThreadPoolExecutor(max_workers=50) as t:
    for i in range(100):      # 提交100个任务到线程池,这50个workers会共同完成这100个任务。
        t.submit(fn, name=f"线程{i}")  # >>>> 这里是用submit提交,而不是start

    # 提交完所有任务后,线程池会在with块结束时自动关闭
print("123")

标签:__,协程,name,爬虫,range,线程,print,100,多线程
From: https://www.cnblogs.com/abloger/p/18246215

相关文章

  • 豆瓣电影信息爬虫【2024年6月】教程,赋完整代码
    豆瓣电影信息爬虫【2024年6月】教程,赋完整代码在本教程中,我们将使用以下技术栈来构建一个爬虫,用于爬取豆瓣电影列表页面的信息:完整代码放到最后;完整代码放到最后;完整代码放到最后;重要的事情说三遍。1.技术栈介绍在本教程中,我们将使用以下技术栈来构建一个爬虫,......
  • Qt - 多线程之线程的开始暂停恢复停止
    示例1在Qt中,可以使用QThread的线程控制功能来暂停和恢复一个线程。这里是一个简单的例子:#include<QThread>#include<QDebug>classWorkerThread:publicQThread{voidrun()override{qDebug()<<"Threadisrunning";//执行一些任务......
  • GATK不能多线程的问题
    问题:申请了多线程但是只能单线程 17:13:48.941INFOIntelPairHmm-Availablethreads:117:13:48.941INFOIntelPairHmm-Requestedthreads:417:13:48.941WARNIntelPairHmm-Using1availablethreads,but4wererequested 解决方法:exportOMP_N......
  • 【C++】多线程(基于Windows以及pthread库)
    文章目录一、前言1.1进程和线程二、创建线程2.1线程函数pthread_self(void)2.2创建线程三、线程退出3.1线程函数pthread_exit()四、线程回收4.1线程函数pthread_join()4.2线程数据回收五、线程分离5.1线程函数pthread_detach()六、C++线程类七、线程同......
  • python指南之多线程与多进程编程大全
    Python作为一种高级编程语言,提供了多种并发编程的方式,其中多线程与多进程是最常见的两种方式之一。在本文中,我们将探讨Python中多线程与多进程的概念、区别以及如何使用线程池与进程池来提高并发执行效率。多线程与多进程的概念多线程多线程是指在同一进程内,多个线程并发执......
  • python-爬虫-邮箱发送
    #-*-coding:utf-8-*-#发送信息到邮箱importemail.utilsimportsmtplibfromemail.mime.textimportMIMEText#发送文本fromemail.mime.imageimportMIMEImage#发送图片fromemail.mime.multipartimportMIMEMultipartfromemail.headerimportHeader""&quo......
  • python-爬虫-获取浏览器的cookies
    1、封装浏览器对象#-*-coding:utf-8-*-"""封装类将获取浏览器的对象封装成一个类调用方法:1、importGet_Browser2、driver=Get_Browser.Get_Browsers().get_browser()"""fromseleniumimportwebdriverclassGet_Browsers:def__init__(self......
  • python-爬虫-解决反爬机制-登录淘宝
    #-*-coding:utf-8-*-"""1、先手动登录获取cookie2、获取cookie保存在taobaoCookies.pickle文件中3、使用cookie去请求网页"""importosimportpickleimporttimefromseleniumimportwebdriverfromselenium.webdriver.support.waitimportWebDriverWa......
  • python-爬虫-playwright模块反爬
    fromplaywright.sync_apiimportPlaywright,sync_playwright,expectdefrun(playwright:Playwright)->None:#指定浏览器启动的端口#打开cmd:chrome--remote-debugging-port=9412--user-data-dir="F:\\google"#--remote-debugging-port=指定的端口......
  • SSM-小区物业管理系统-48954(免费领源码+开发文档)可做计算机毕业设计JAVA、PHP、爬虫、
    基于SSM小区物业管理系统摘要随着计算机科学技术日渐成熟,人们已经深刻认识到了计算机功能的强大,计算机已经进入到了人类社会发展的各个领域,并且发挥着十分重要的作用。每个社区的物业管理是一项系统而复杂的工作,它需要一个团队互相配合、分工协作。在该领域,传统的手工存取......