线程.py

线程进程和CPU之间的关系:CPU运行的就是线程,运行的多了就是进程,同时运行了多个线程就变成了多线程(仅限个人理解

概念:

        线程:进程中的每个子任务,不能独立存在,CPU执行的最小单位

        进程:独立的所有子任务的集合

特点:

        进程:内存独立,CPU独立,速率低共享数据难,安全性高

        线程:内存共享,CPU使用独立,速率高共享数据易,安全性低

线程的五种状态:            

                        创建状态  就绪状态  运行状态  阻塞状态  死亡状态

threading模块包含的方法:除了_thread模块中的所有方法外

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

                                          threading.enumerate():正在运行的线程

                                          threading.activeCount():返回正在运行的线程的数量len(threading.enumerate()):

                                          join() 加入并阻断主函数的执行,即执行完成才执行主函数,可以加时间,join(1)阻断一秒结束阻断

                                          start() 和 run()

实现线程的两种方式函数方式和类方式

以下是类方式的步骤及调用方法的过程

import threading,time                     #第一步:继承threading.Thread
class Mythread(threading.Thread):
    def __init__(self):
        threading.Thread.__init__(self);  #第二部:写构造方法,且必须调用父类的构造方法
        print('Mythread __init__()')
    def run(self):                        #第三部:重写父类的run方法,会在start之后自动调用
        for i in range(10):
            print(self.getName(),i)
            time.sleep(0.1)               #时间单位为秒
t1=Mythread()
t2=Mythread()
t1.start()
t2.start()                                #第四步:实现开始方法,如果重写了start()方法,一定要调用父类的start(),需要调用start()方法才可以执行
input()

函数方式:线程必须依赖函数实现,不能单独存在。当函数结束,线程结束。想让线程一直执行在最后加一个input()

import threading,time
def something():
    for i in range(1,11):
        print(i)
        time.sleep(0.2)
threading._start_new_thread(something,())
input()


猜你喜欢

转载自blog.csdn.net/hsy_666/article/details/80519461