python的多线程和守护线程
1、创建一个多线程
import threading
import time '''
def threading_func(num):
print("running on number:%s" %(num))
time.sleep(3) if __name__ == '__main__':
t1 = threading.Thread(target=threading_func,args=(1,))
t2 = threading.Thread(target=threading_func,args=(2,))
t1.start()
t2.start()
#这里不会等待就会执行print语句,因为执行这个代码的是一个线程,而t1和t2又分别是2个线程,所以不会有等待就会执行print语句
print("____________________main____________________")
2、join语句,等待某个线程执行完成在往下执行
def threading_func(num):
print("running on number:%s" %(num))
time.sleep(3) if __name__ == '__main__':
t1 = threading.Thread(target=threading_func,args=(1,))
t2 = threading.Thread(target=threading_func,args=(2,))
t1.start()
t2.start()
# t2.join()
print(t1.getName())
#获取线程名
print(t2.getName())
t1.join()
t2.join()
#等待线程t1的执行完成在往下执行,就是wait的意思,子线程t1执行后在往下执行
print("____________________main____________________")
3、线程的守护daemon
import threading
import time def run(n):
print("[%s]----is running----\n" %n)
time.sleep(3)
print("[%s]----is down----\n" %n) '''
def main():
for i in range(5):
t = threading.Thread(target=run,args=[i,])
t.start()
time.sleep(3)
print("start threading",t.getName()) #这个例子是这样的,m是主线程,m这个主线程调用main这个方法,main这个方法又构建了5个子线程,我们就可以设置主线程监视子线程,监视的意思就是主线程退出,无论子线程是否执行
#完毕,都全部退出m.setDaemon(True),这个设置就是m这个主线程监视m的所有的子线程
m = threading.Thread(target=main,args=[])
m.setDaemon(True)
m.start()
# m.join()
print("-----main thread down----") # 结果如下,主线程退出后,子线程有的还没有开始就已经退出了
# -----main thread down----
# [0]----is running---- ''' ''' def main():
for i in range(5):
t = threading.Thread(target=run,args=[i,])
t.start()
time.sleep(3)
print("start threading",t.getName()) #这个例子是这样的,m是主线程,m这个主线程调用main这个方法,main这个方法又构建了5个子线程,我们就可以设置主线程监视子线程,监视的意思就是主线程退出,无论子线程是否执行
#完毕,都全部退出m.setDaemon(True),这个设置就是m这个主线程监视m的所有的子线程
m = threading.Thread(target=main,args=[])
# m.setDaemon(True)
m.start()
# m.join()
print("-----main thread down----") # 结果如下,主线程退出后,子线程有的还没有开始就已经退出了
# -----main thread down----
# [0]----is running---- -----main thread down----
[0]----is running---- start threading Thread-2
[0]----is down---- [1]----is running---- [1]----is down----
start threading Thread-3 [2]----is running---- start threading Thread-4
[3]----is running---- [2]----is down---- start threading Thread-5
[3]----is down---- [4]----is running---- start threading Thread-6
[4]----is down---- '''
python的多线程和守护线程的更多相关文章
- Java多线程之守护线程
		
Java多线程之守护线程 一.前言 Java线程有两类: 用户线程:运行在前台,执行具体的任务,程序的主线程,连接网络的子线程等都是用户线程 守护线程:运行在后台,为其他前台线程服务 特点:一旦所有用 ...
 - 【python】-- 继承式多线程、守护线程
		
继承式多线程 1.定义 继承式多线程是自己自定义类,去继承theading.Tread这个类,通过类实例.start()启动,去执行run方法中的代码. import threading import ...
 - [javaSE] 多线程(守护线程)
		
我们一般使用多线程,都是while的死循环,想要结束线程,只需退出死循环即可 当线程中调用了sleep()方法或者wait()方法,当前的线程就会进入冻结状态,这个线程就结束不了 调用Thread对象 ...
 - 20190102(多线程,守护线程,线程互斥锁,信号量,JoinableQueue)
		
多线程 多进程: 核心是多道技术,本质上就是切换加保存技术. 当进程IO操作较多,可以提高程序效率. 每个进程都默认有一条主线程. 多线程: 程序的执行线路,相当于一条流水线,其包含了程序的具体执行步 ...
 - 【多线程】守护线程	Daemon
		
守护线程 Daemon 线程分为用户线程和守护线程 虚拟机必须确保用户线程执行完毕 虚拟机不用等待守护线程执行完毕 如,后台记录操作日志,监控内存,垃圾回收等待.. 代码示例: /** * @Desc ...
 - java多线程之守护线程以及Join方法
		
版权声明:本文出自汪磊的博客,转载请务必注明出处. 一.守护线程概述及示例 守护线程就是为其它线程提供"守护"作用,说白了就是为其它线程服务的,比如GC线程. java程序中线程分 ...
 - java多线程之守护线程与非守护线程
		
在java线程中有两种线程,一种是用户线程,其余一种是守护线程. 守护线程具有特殊的含义,比如gc线程.当最后一个非守护线程执行完后,守护线程随着jvm一同结束工作. java中的守护线程需要将Dae ...
 - python多线程,守护线程
		
https://www.cnblogs.com/liuyang1987/p/6292321.html
 - python中多线程与非线程的执行性能对比
		
此对比说明了一件事: 如果是IO型应用,多线程有优势, 如果是CPU计算型应用,多线程没必要,还有实现锁呢. #!/usr/bin/env python # -*- coding: utf-8 -*- ...
 
随机推荐
- Linux命令详解-用户管理
			
1. 用户管理 1.Linux用户管理 linux有三类用户: (1.)超级用户 : root用户具有操作系统的一切权限 uid=0 (2.)普通用户: 具有操作系统有限的权限 uid=500-60 ...
 - 《Linux内核精髓:精通Linux内核必会的75个绝技》一HACK #17 如何使用ext4
			
HACK #17 如何使用ext4 本节介绍ext4的编写和挂载方法.开发版ext4的使用方法.ext4是ext3的后续文件系统,从Linux 2.6.19开始使用.现在主要的发布版中多数都是采用ex ...
 - Swift里的CAP理论和NWR策略应用
			
http://blog.sina.com.cn/s/blog_57f61b490101a8ca.html 最近有人讨论到swift副本数是否能够调整,3副本成本过高,如果改成2副本怎么样?多聊了几句以 ...
 - web.py模版系统
			
介绍: 调用的web.py模版语言Templetor旨在将python的强大功能带入模版.它不是为模板创建新语法,而是重用python语法. Templetor故意限制模版中的变量访问.用户可以访问传 ...
 - Redis安装及五种数据类型
			
redis是非关系型数据库,也叫内存数据库.数据是键值对的形式,通过key查找value 安装Radis:6379 sudo apt-get update sudo apt-get install r ...
 - HTML5 学习之地理定位
			
html5 获取坐标: <!DOCTYPE HTML> <html> <head> <title>test1.html</title> &l ...
 - eclipse 的project explorer问题,这个怎样把localFileSystem去掉
			
转自:https://zhidao.baidu.com/question/550279043.html
 - 使用seaborn制图(小提琴图)
			
import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns # 设置风格, ...
 - 机器学习入门-随机森林预测温度-不同参数对结果的影响调参 1.RandomedSearchCV(随机参数组的选择) 2.GridSearchCV(网格参数搜索)  3.pprint(顺序打印) 4.rf.get_params(获得当前的输入参数)
			
使用了RamdomedSearchCV迭代100次,从参数组里面选择出当前最佳的参数组合 在RamdomedSearchCV的基础上,使用GridSearchCV在上面最佳参数的周围选择一些合适的参数 ...
 - 机器学习入门-DBSCAN聚类算法
			
DBSCAN 聚类算法又称为密度聚类,是一种不断发张下线而不断扩张的算法,主要的参数是半径r和k值 DBSCAN的几个概念: 核心对象:某个点的密度达到算法设定的阈值则其为核心点,核心点的意思就是一个 ...