在学习多线程之前,我来说说我对进程和线程的理解。 什么是进程: 计算机程序是磁盘中可执行的二进制(或其他类型)的数据。他们只有在被读取到内存中、被操作系统调用的时候才可以他们的生命周期。进程是程序的一次执行,每个进程都有自己的地址空间、内存、数据线,以及其他记录其运动轨迹的辅助数据。操作系统管理在上面运行的所有进程,并为这些进程公平地分配时间。 什么是线程: 线程与进程有些相似,他们不同的是,所有的线程都运行在同一个进程中,共享相同的运行环境。可以想象成是在主进程或“主线程”中进行的“迷你线程”。 话不多说直接上例子: from time import sleep,ctime import threading '''引入线程模块''' #音乐播放器 def music(func,loop): for i in range(loop): print('I was listenning to %s! %s' %(func,ctime())) sleep(2) #视频播放器 def movie(func,loop): for i in range(loop): print('I was at the %s!%s' %(func,ctime())) sleep(5) #创建线程组 threads = [] '''创建线程模块,用来装载线程''' #创建线程t1,并添加到线程数组 t1 = threading.Thread(target=music,args=('爱情买卖',2)) '''通过threading.Thread()来创建线程,args是要传入的参数''' threads.append(t1) #创建线程t2,并添加到线程数组 t2 = threading.Thread(target=movie,args=('阿凡达',2)) threads.append(t2) if __name__ == '__main__': #启动线程 for t in threads: '''通过for循环遍历threads数组中装载的线程;start()开始线程活动,join()等待线''' t.start() #守护线程 for t in threads: t.join() print('all end: %s'%ctime())
运行结果:
C:\Python35\python.exe C:/Users/sun/PycharmProjects/新建文件夹/线程.py
I was listenning to 爱情买卖! Thu Dec 6 10:02:52 2018
I was at the 阿凡达!Thu Dec 6 10:02:52 2018
I was listenning to 爱情买卖! Thu Dec 6 10:02:54 2018
I was at the 阿凡达!Thu Dec 6 10:02:57 2018
all end: Thu Dec 6 10:03:02 2018
Process finished with exit code 0
从运行结果可以看出,两个字线程(music,movie)同时启动于10:02:52,直到所有线程结束于10:03:02,总耗时10秒。movie的两次电影循环共需要10秒,music的歌曲循环需要4秒,执行结果可以看出两个线程达到了并行工作。