Python编程之守护线程 纯洁的代码 2020-03-11 1,382 阅读2分钟 什么是守护线程?什么是非守护线程?什么是线程同步?文章目标:搞懂Python中的上面三个问题非守护线程 线程概念当一个进程启动以后,默认会产生一个主线程,因为线程是程序执行的最小单位,在Python当中线程默认情况下就是setDaemon(False)(非守护线程),也就是主线程执行完自己的任务退出以后,子线程会继续执行自己的任务,不会随主线程退出受影响案例[Python] 纯文本查看 复制代码?0102030405060708091011121314151617import threadingimport time def run(): time.sleep(2) # 延时等待2s print('---子线程结束执行---') def main(): t1 = threading.Thread(target=run) t1.start() print('---主线程结束执行---') if __name__ == '__main__': main()输出[Python] 纯文本查看 复制代码?12---主线程结束执行------子线程结束执行---总结:非守护线程,子线程不随主线程结束而立马结束,而是继续执行守护线程当守护线程时,子线程会守护主线程,主线程一旦退出,全部子线程都会被强制终止案例[Python] 纯文本查看 复制代码?010203040506070809101112131415161718import threadingimport time def run(): time.sleep(2) print('---子线程结束---') def main(): t1 = threading.Thread(target=run) t1.setDaemon(True) # 设置子线程守护主线程 t1.start() print('---主线程结束---') if __name__ == '__main__': main()输出[Python] 纯文本查看 复制代码?1---主线程结束---线程同步线程同步就是让线程处于堵塞状态,等待子线程执行以后主线程再执行,也可以设置堵塞时间案例(主线程堵塞,等待子线程结束以后再执行)[Python] 纯文本查看 复制代码?010203040506070809101112131415161718import threadingimport time def run(): time.sleep(2) print('---子线程结束---') def main(): t1 = threading.Thread(target=run) t1.start() t1.join() # 主线程堵塞 print('---主线程结束---') if __name__ == '__main__': main()输出[Python] 纯文本查看 复制代码?12---子线程结束------主线程结束---案例(主线程堵塞1s,主线程继续执行)[Python] 纯文本查看 复制代码?010203040506070809101112131415161718import threadingimport time def run(): time.sleep(2) print('---子线程结束---') def main(): t1 = threading.Thread(target=run) t1.start() t1.join(timeout=1) # 主线程堵塞1s print('---主线程结束---') if __name__ == '__main__': main()输出[Python] 纯文本查看 复制代码?12---主线程结束------子线程结束---更多学习资料可关注:itheimaGZ获取