2.单线程和多线程

2024-07-06 16:42:29 浏览数 (2)

单线程

正常情况下,我们写的绝大多数程序都是单线程,下面是例子:

代码语言:Python复制
def function():
    for i in range(10):
        print("函数", i)

if __name__ == '__main__':
    function()
    for i in range(5):
        print("主函数", i)

编译后执行会先执行function函数再执行main函数中的循环,程序会先执行完function函数,再去执行下面的for循环语句。

多线程

  1. 导入多线程Thread类
代码语言:Python复制
from threading import Thread  # 线程类

2.创建示例

代码语言:Python复制
def function():
    for i in range(10):
        print("函数", i)
 
 
if __name__ == '__main__':
    t = Thread(target=function)  # 创建线程对象并给线程安排任务
    t.start()  # 多线程状态为可以开始工作状态, 具体的执行时间由CPU决定
 
    for i in range(5):
        print("主函数", i)

此时可以看到输出结果是function函数与main函数是混杂的,说明两条线程是同时并发执行的,才会出现输出混杂在一起的情况。

3.或者写一个子类来继承线程的属性:

代码语言:Python复制
from threading import Thread  # 线程类
 
class MyThread(Thread):  #
    def run(self):  # 固定的-> 当线程被执行的时候, 被执行的就是run()
        for i in range(10):
            print("子线程", i)
 
 
if __name__ == '__main__':
    t = MyThread()
    t.start()  # 开启线程
 
    for i in range(5):
        print("主线程", i)

子类继承了Thread类的属性,它里面定义了run函数,当子类被调用时,将运行run函数。

主类中同样是创建多线程子类对象,并开启线程。注意这里千万不要用run方法,否则变成了调用子类的方法,执行完毕后才会执行后面的代码,变成了类似第一条单线程例子。

0 人点赞