Python 多线程-守护线程、线程等待、互斥锁、信号量详细解读!

目录

Python 多线程详解

一、线程

  • 概念

  • 多线程优势

二、Python 线程

  • threading

  • 重新写run方法

  • 守护线程 setDaemon(True)

  • 线程等待 join( )

  • 多线程共享全局变量

  • 互斥锁 Lock( )

  • 信号量 (BoundedSemaphore类)

一、线程

1. 概念

线程(英语:thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务

2. 多线程优势

  1. 多任务执行。

一个进程中可以并发多个线程,每条线程并行执行不同的任务

  1. 共享资源。

在同一进程中的各个线程,都可以共享该进程所拥有的资源,这首先表现在:所有线程都具有相同的地址空间(进程的地址空间)。

二、Python 线程

1. threading

线程创建,需要导入Python内置模块threading中的thread()方法创建线程。

例如:

import threading
from time import sleep


def dance():
    for i in range(10):
        print("我正在跳舞%s"%i)
        sleep(1)


t1 = threading.Thread(target=dance)
t2 = threading.Thread(target=dance)
t1.start()

run:

我正在跳舞0
我正在跳舞0
我正在跳舞1
我正在跳舞1
我正在跳舞2
我正在跳舞2
我正在跳舞3我正在跳舞3
我正在跳舞4
我正在跳舞4
我正在跳舞5我正在跳舞5
我正在跳舞6
我正在跳舞6
我正在跳舞7
我正在跳舞7
我正在跳舞8
我正在跳舞8
我正在跳舞9我正在跳舞9

2. 重新写run方法

在threading.Thread类里面有一个run()方法,当我们调用Thread的时候,程序会自动调用Thread里面的run()方法。所以,重写run方法,需要继承threading.Thread类,再对run()进行重写。

import threading
from time import sleep


class SelfThread(threading.Thread):

    def run(self):
        self.dance()

    def dance(self):
        for i in range(3):
            print("我正在跳舞%s"%i)
            sleep(1)


t1 = SelfThread()
t2 = SelfThread()
t1.start()
t2.start
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值