Python多线程简单实例
1、打开Python开发工具IDLE,新建‘threaddemo.py’文件,写代码如下:from threading import Threaddef fun(args): print (args)fun('a')
2、F5运行程序,打印出'a',这里还没涉及多线程。
3、改写程序,在新的线程执行fun函数,代码如下:from threading import Threaddef fun(args): print (args)print ('主线程开始')t1 = Thread(target = fun,args=('args',))t1.start()print ('主线程结束')
4、F5运行程序,当运行到t1.start(),启动了新的线程执行fun函数,不阻塞主线程。打印出信息如下;
5、改写fun函数,耗时较长,观察更明显,程序默认会等待所有线程执行完才推出。from threading import Threadimport timedef fun(args): for i in args: time.sleep(1) print (i)print ('主线程开始')t1 = Thread(target = fun,args=('args',))print (t1.isDaemon())t1.start()print ('主线程结束')
6、F5运行程序,观察到主线程与新创建的线程一起执行,不会阻塞。这时创建的线程不是守护线程。
7、如果将新线程 t1.setDaemon(True) 这时,主线程结束,程序退出了,会关闭新线程,不论有没有执行完。Python官方是这样解释 。但是Python自带的IDLE显示有问题,在其他IDE环境以及命令行端均如此。下图第一个是加了t1.setDaemon(True)。第二个是没加的情况