IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> python学习笔记爬虫相关线程 -> 正文阅读

[Python知识库]python学习笔记爬虫相关线程

本文为了说明例子,用中文作为变量写在了程序里面,一般编程最好不要那么写

概念

多线程(multithreading),是指从软件或者硬件上实现多个线程并发执行的技术。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理性能。具有这种能力的系统包括对称多处理机、多核心处理器以及芯片级多处理或同时多线程处理器。在一个程序中,这些独立运行的程序片段叫作“线程”(Thread),利用它编程的概念就叫作“多线程处理”。

开启多线程的方式

方法一,直接开

from multiprocessing import Process
from threading import Thread
import time


def task(函数变量):
    print('%s正在运行'%函数变量)
    time.sleep(1)
    print('%s运行结束'%函数变量)



t = Thread(target=task,args=('BOSS',))

t.start()
print('主线程')

在这里插入图片描述

方法二,用类开

from threading import Thread
import time


class MyThead(Thread):
    def __init__(self, 函数变量):

        super().__init__()
        self.函数变量 = 函数变量

    def run(self):
        print('%s正在运行'%self.函数变量)
        time.sleep(2)
        print('BOSS')


if __name__ == '__main__':
    t = MyThead('BOSS')
    t.start()
    print('主线程')

效果
在这里插入图片描述

引入join方法

主线程等待子线程运行结束再执行

from threading import Thread
import time


def task(函数变量):
    print('%s 正在运行'%函数变量)
    time.sleep(3)
    print('%s运行结束'%函数变量)


if __name__ == '__main__':
    t = Thread(target=task,args=('BOSS',))
    t.start()
    t.join()  # 主线程等待子线程运行结束再执行
    print('主线程')

效果
在这里插入图片描述

注意,同一个进程下多线程数据是共享的

举例

from threading import Thread
import time


等待被剥削的资金 = 100000


def task():
    global 等待被剥削的资金
    等待被剥削的资金 = 200
    print(等待被剥削的资金)


if __name__ == '__main__':
    t = Thread(target=task)
    t.start()
    t.join()
    print(等待被剥削的资金)

效果
在这里插入图片描述

其他方法

from threading import Thread, active_count, current_thread
import os,time


def 要执行的函数(n):

    print('正在执行',current_thread().name)#获取当前线程的名字
    time.sleep(n)


if __name__ == '__main__':
    A = Thread(target=要执行的函数,args=(1,))
    A1 = Thread(target=要执行的函数,args=(0.1,))
    A.start()
    A1.start()
    A.join()
    print('主线程',active_count())# 统计当前正在活跃的线程数
    print('主线程',os.getpid())#输出当前线程的线程号
    print('主线程',current_thread().name)

效果
在这里插入图片描述

守护线程

守护线程是一种特殊的线程,就和它的名字一样,它是系统的守护者,在后台默默完成一些系统性的服务,比如垃圾回收线程,JIT线程就可以理解为守护线程。
与守护线程相对的是用户线程,用户线程可以认为是系统的工作线程,它会完成这个程序要完成的业务员操作。如果用户线程全部结束,则意味着这个程序无事可做。守护线程要守护的对象已经不存在了,那么整个应用程序就应该结束。

主线程运行结束之后不会立刻结束 会等待所有其他非守护线程结束才会结束,因为主线程的结束意味着所在的进程的结束

代码实现

from threading import Thread
import time


def 要执行的函数(函数变量):
     print('%s正在运行'%函数变量)
     time.sleep(1)
     print('%s运行结束'%函数变量)


if __name__ == '__main__':
    t = Thread(target=要执行的函数,args=('BOSS',))
    t.daemon = True#设为守护线程
    t.start()
    print('主线程')

效果
在这里插入图片描述

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-10-12 23:23:18  更:2021-10-12 23:23:24 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 18:50:22-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码