目录
Python 多线程详解
一、线程
-
概念
-
多线程优势
二、Python 线程
-
threading
-
重新写run方法
-
守护线程 setDaemon(True)
-
线程等待 join( )
-
多线程共享全局变量
-
互斥锁 Lock( )
-
信号量 (BoundedSemaphore类)
一、线程
1. 概念
线程(英语:thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务
2. 多线程优势
- 多任务执行。
一个进程中可以并发多个线程,每条线程并行执行不同的任务
- 共享资源。
在同一进程中的各个线程,都可以共享该进程所拥有的资源,这首先表现在:所有线程都具有相同的地址空间(进程的地址空间)。
二、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