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 -*- ...
随机推荐
- 新生代老年代GC组合
新生代通常存活时间较短,因此基于Copying算法来进行回收,所谓Copying算法就是扫描出存活的对象,并复制到一块新的完全未使用的空间中 在执行机制上JVM提供了串行GC(SerialGC).并行 ...
- SpringBoot学习记(一)第一个SpringBoot Web服务
工具IDEA 一.构建项目 1.选择Spring Initializr 2.填写项目信息 3.勾选webService 4.勾选Thymeleaf 5.项目建立完成,启动类自动生成 二.写个Contr ...
- LightGBM优势总结
效率和内存上的提升 1) 在训练决策树计算切分点的增益时,xgboost采用预排序,即需要对每个样本的切分位置都要计算一遍,所以时间复杂度是O(#data). 而LightGBM则是将样本离散化为直方 ...
- 比较有意思的原生态js拖拽写法----摘自javascript高级程序设计3
var DragDrop = function () { var dragging = null; var diffX = 0; var diffY = 0; function handleEvent ...
- 【基础知识五】神经网络NN
常用模型:BP神经网络,RBF神经网络 一.神经元模型 | 连接权,阈值,激活函数 1. 输入信号通过带权重的连接(connection)进行传递,神经元接收到的总输入值将与神经元的阈值进行比较, ...
- Glusterfs3.3.1DHT(hash分布)源代码分析
https://my.oschina.net/uvwxyz/blog/182224 1.DHT简介 GlusterFS使用算法进行数据定位,集群中的任何服务器和客户端只需根据路径和文件名就可以对数据进 ...
- 网络命令ping/netstat/ipconfig/arp/tracert/nbstat
1.1 Ping命令的使用 ping检测网络故障步骤: ping 127.0.0.1 ping环绕指针检测是否在计算上anzhaung了TCP/IP协议及配置是否正确 ping本机IP这个命令被被送到 ...
- uva-10047
我们考虑一个特殊情况,一个独轮车是一个圆环,独轮车靠这个圆环运动,这个圆环上涂有五个不同的颜色,如下图每个颜色段的圆心角是72度,这个圆环在MxN个方格的棋盘上运动,独轮车从棋盘中一个格子的中心点开始 ...
- angular 中怎么获取路径上的参数 参考:https://docs.angularjs.org/api/ng/service/$location
参考: https://docs.angularjs.org/api/ng/service/$location
- leetcode202
public class Solution { private int SumSqares(int n) { //将一个数字的各个数位的值分开存储 var list = new List<int ...