Python基础-多线程threading的使用

一、threading介绍

1.threading介绍
(1)threading是对thread模块的再封装,线程并发运行并且共享内存

(2)threading模块支持守护线程

二、threading的使用

1.导入线程模块 import threading

(1)threading常用方法

threading.currentThread():返回当前的线程变量

threading.currentThread().name:返回当前的线程的名字

threading.enumerate():返回一个包含正在运行的线程的list,正在运行指启动后,结束前的线程

threading.activeCount():返回正在运行的线程数量(与len(threading.enumerate()) 有相同结果)

(2)Thread线程类的语法结构

Thread(group=None,target=None,name=None,args=(),kwargs={})

group:线程组,目前只能使用None

target:执行的方法

name:线程名

args/kwargs:要传如方法的参数

(3)Thread创建的实例对象常用方法

start():线程准备就绪,等待CPU调度

join(timeout):阻塞当前环境中的子线程,直到调用此方法的线程终止或到达指定的timeout

setName():设置线程名

getName():获取线程名

setDaemon(True):设为守护线程,一定要再调用start()前设置

2.threading多线程案例

(1)代码

import threading
import time

def run_001(name):
    print(threading.current_thread().name, time.ctime())
    print("你好,%s"%name)
    time.sleep(2)
    print("第一个线程结束...%s"%time.ctime())


def run_002(name):
    print(threading.current_thread().name, time.ctime())
    print("你好,%s"%name)
    time.sleep(1)
    print("第二个线程结束...%s" % time.ctime())


def run_003():
    print(threading.current_thread().name, time.ctime())
    time.sleep(3)
    print("第三个线程结束...%s"%time.ctime())

if __name__ == '__main__':
    print("---主线程开始---",threading.current_thread().name)
    t1 = threading.Thread(target=run_001,args=("suner",))
    t2 = threading.Thread(target=run_002,args=("wang",))
    t3 = threading.Thread(target=run_003)

    t1.start()
    t2.start()
    t3.start()
    print("---主线程结束---",threading.current_thread().name)

(2)结果

3.列表式使用

利用列表方式,实现多线程并发执行效果

(1)代码

import threading
import time

def run(num):
    print("%s线程开始..."%threading.current_thread().name)
    print("正在打印...%s"%num)
    time.sleep(2)
    print("%s线程结束..."%threading.current_thread().name)

if __name__ == '__main__':
    print("---主线程开始---", threading.current_thread().name)
    thread_list = []
    for i in range(5):
        # 创建一个线程,并将创建的线程添加到线程列表
        t = threading.Thread(target=run, args=(i,))
        thread_list.append(t)

    # 循环线程列表,统一执行
    for t in thread_list:
        t.start()

    print("---主线程结束---", threading.current_thread().name)

(2)结果

4.join用法

(1)代码

import threading
import time

def run(num):
    print("%s线程开始..."%threading.current_thread().name)
    print("正在打印...%s"%num)
    time.sleep(2)
    print("%s线程结束..."%threading.current_thread().name)

if __name__ == '__main__':
    print("---主线程开始---", threading.current_thread().name)
    thread_list = []
    for i in range(1,6):
        # 创建一个线程,并将创建的线程添加到线程列表
        t = threading.Thread(target=run, args=(i,))
        thread_list.append(t)

    # 循环线程列表,统一执行
    for t in thread_list:
        t.start()
        t.join()

    print("---主线程结束---", threading.current_thread().name)

(2)结果

猜你喜欢

转载自blog.csdn.net/qq_39620483/article/details/87854746
今日推荐