栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python学习笔记,爬虫相关,线程

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python学习笔记,爬虫相关,线程

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

本文目录
    • 概念
    • 开启多线程的方式
    • 引入join方法
    • 注意,同一个进程下多线程数据是共享的
    • 其他方法
    • 守护线程

概念

多线程(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('主线程')

效果

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/315758.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号