1.多线程:
多线程是为了同步完成多项任务,不是为了提高运行效率,而是为了提高资源使用效率来提高系统的效率。线程是在同一时间需要完成多项任务的时候实现的。
最简单的比喻多线程就像火车的每一节车厢,而进程则是火车。车厢离开火车是无法跑动的,同理火车也不可能只有一节车厢。多线程的出现就是为了提高效率。同时它的出现也带来了一些问题。
线程与进程的关系:
进程就是一个应用程序在处理机上的一次执行过程,它是一个动态的概念,而线程是进程中的一部分,进程包含多个线程在运行。一个程序运行至少一个进程,一个进程里面至少包含一个线程,线程是进程的组成部分。
2.threading模块的简单使用:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | import threading import time def coding(): for x in range ( 3 ): print ( '正在写代码...' ) time.sleep( 1 ) def drawing(): for x in range ( 3 ): print ( '正在画图%s' % threading.current_thread()) #查看线程 time.sleep( 1 ) def main(): t1 = threading.Thread(target = coding) #创建线程 t2 = threading.Thread(target = drawing) t1.start() #启动线程 t2.start() # print(threading.enumerate())#查看线程数量与名字 if __name__ = = '__main__' : main() |
3.使用Thread类创建多线程:
为了让线程代码更好的封装。可以使用threading 模块下的Thread类,继承自这个类,然后实现run 方法。线程就会自动运行run方法中的代码。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | import threading import time class CodingThread(threading.Thread): def run( self ): for x in range ( 3 ): print ( '正在写代码%s' % threading.current_thread()) time.sleep( 1 ) class DrawingThread(threading.Thread): def run( self ): for x in range ( 3 ): print ( '正在画图%s' % threading.current_thread()) time.sleep( 1 ) def main(): t1 = CodingThread() t2 = DrawingThread() t1.start() t2.start() if __name__ = = '__main__' : main() |