美文网首页Python的小技巧
Python多线程(threading.Thread)的用法

Python多线程(threading.Thread)的用法

作者: 大海龟啦啦啦 | 来源:发表于2020-05-29 08:55 被阅读0次

threading.Thread类最普遍的用法如下所示:

import threading
import time

count = 0

"""注: 可以参考这篇博客https://blog.csdn.net/l835311324/article/details/86608850的示例2,
这个MyThread类继承了threading模块的Thread类,对其下面的run方法进行了重写"""

class MyThread(threading.Thread):
    def __init__(self , threadName):
        super(MyThread,self).__init__(name=threadName)
    """一旦这个MyThread类被调用,自动的就会运行底下的run方法中的代码,
    因为这个run方法所属的的MyThread类继承了threading.Thread"""
    def run(self):
        global count
        for i in range(100):
            count += 1
            time.sleep(0.3)
            print(self.getName() , count)


for i in range(2):
    MyThread("MyThreadName:" + str(i)).start()

以下是Thread对象方法

Thread 对象数据属性 描述
name 线程名
ident 线程的标识符
daemon 布尔标志,表示这个线程是否是守护线程

Thread主要对象方法

Thread 对象方法 描述
init(group=None, tatget=None,args=(), kwargs ={}, verbose=None, daemon=None) 实例化一个线程对象,需要有一个可调用的 target,以及其参数 args或 kwargs。
start() 开始执行该线程
run() 定义线程功能的方法(通常在子类中被应用开发者重写)
join (timeout=None) 直至启动的线程终止之前一直挂起;除非给出了 timeout(秒),否则会一直阻塞

示例:

import threading
import time

def read():
    for x in range(5):
        print('在%s,正在听音乐' % time.ctime())
        time.sleep(1.5)

def write():
    for x in range(5):
        print('在%s,正在看电视' % time.ctime())
        time.sleep(1.5)

def main():

    music_threads = []  # 用来存放执行read函数线程的列表
    TV_threads = []  # 用来存放执行write函数线程的列表

    for i in range(1,2):  # 创建1个线程用于read(),并添加到read_threads列表
        t = threading.Thread(target=read) # 执行的函数如果需要传递参数,threading.Thread(target=函数名,args=(参数,逗号隔开))
        music_threads.append(t)

    for i in range(1,2): # 创建1个线程执行write(),并添加到write_threads列表
        t = threading.Thread(target=write) # 执行的函数如果需要传递参数,threading.Thread(target=函数名,args=(参数,逗号隔开))
        TV_threads.append(t)

    for i in range(0,1):  # 启动存放在read_threads和write_threads列表中的线程
        music_threads[i].start()
        TV_threads[i].start()

if __name__ == '__main__':
    main()

为了让线程更好的封装,可以用threading模块下的Thread类,继承这个类,然后实现run方法,线程就回自动运行run方法中的代码,具体示例如开头所示的代码块。

参考链接(https://blog.csdn.net/l835311324/article/details/86608850

相关文章

网友评论

    本文标题:Python多线程(threading.Thread)的用法

    本文链接:https://www.haomeiwen.com/subject/lzgtzhtx.html