总结:

  1. 默认父线程跑完,子线程并不会马上退出,不像 thread.start_threadXXXX
  2. 父线程跑完了,并没有退出,一直在那里
  3. 线程启动速度很快,不占多少开销,不到1毫 秒

代码:

# -*- coding: utf-8 -*-
"""
学习 并发
linux下执行
"""
from threading import Thread
from multiprocessing import Process
import time
import os
import psutil
def work():
print('%s,%f: sub begin %d' % (time.strftime('%M:%S',time.localtime(time.time())),time.time(),os.getpid()))
print "%s,%f: sub %d,%d,%d" % (time.strftime('%M:%S',time.localtime(time.time())),time.time(),os.getpid(),os.getppid(), psutil.Process(os.getpid()).num_threads()) time.sleep(5) print "%s,%f: sub %d,%d,%d" % (time.strftime('%M:%S',time.localtime(time.time())),time.time(),os.getpid(),os.getppid(), psutil.Process(os.getpid()).num_threads())
print('%s,%f: sub end %d' % (time.strftime('%M:%S',time.localtime(time.time())),time.time(),os.getpid())) if __name__ == '__main__': print "%s,%f: main begin" % (time.strftime('%M:%S',time.localtime(time.time())),time.time())
print "%s,%f: main %d,%d,%d" % (time.strftime('%M:%S',time.localtime(time.time())),time.time(),os.getpid(),os.getppid(), psutil.Process(os.getpid()).num_threads())
# 开启子线程
t=Thread(target=work)
t.start()
print '%s,%f: main 线程' % (time.strftime('%M:%S',time.localtime(time.time())),time.time())
print "%s,%f: main %d,%d,%d" % (time.strftime('%M:%S',time.localtime(time.time())),time.time(),os.getpid(),os.getppid(), psutil.Process(os.getpid()).num_threads()) # 开启子进程
# t=Process(target=work)
# t.start()
# print "\nmain %d,%d,%d" % (os.getpid(),os.getppid(), psutil.Process(os.getpid()).num_threads())
# print('\nmain 进程') print "%s,%f: main end" % (time.strftime('%M:%S',time.localtime(time.time())),time.time())

  

输出:

格式说明:

小时 :秒,时间戳,     <当前进程ID,  [父 进程ID,当前进程线程数量]>

root@ssmaster:~/python# python test_threadprocess1.py

----------------------------------------------------------

03:04,1536397384.349529: main begin
03:04,1536397384.349605: main 3604,2692,1
03:04,1536397384.350838: sub begin 3604
03:04,1536397384.350939: main 线程
03:04,1536397384.351009: sub 3604,2692,2
03:04,1536397384.351310: main 3604,2692,2
03:04,1536397384.352097: main end
03:09,1536397389.357353: sub 3604,2692,2

03:09,1536397389.358372: sub end 3604

----------------------------------------------------------

输出解读:

  1. 黄色 标记的中间 输出部分 ,是启动 子线程期间,这段 时间非常快,说明启动线程的速度很快
  2. 红色标记,此时main线程的逻辑 代码跑完了,但是还是显示有2个线程,对比开始,说明main线程并 没有退出

[b0026] python 归纳 (十一)_线程_threading.Thread的更多相关文章

  1. [b0032] python 归纳 (十七)_线程同步_信号量Semaphore

    代码: # -*- coding: utf-8 -*- """ 多线程并发同步 ,使用信号量threading.Semaphore 逻辑: 多个线程,对同一个共享变量 , ...

  2. [b0024] python 归纳 (十)_线程 _Thread模块

      #!/usr/bin/pythonn # -*- coding: UTF-8 -*- """ 学习线程 thread 总结: 1. 主线程退出,所有子线程都退出 2. ...

  3. python全栈开发 * 线程锁 Thread 模块 其他 * 180730

    一,线程Thread模块1.效率更高(相对于进程) import time from multiprocessing import Process from threading import Thre ...

  4. [b0021] python 归纳 (七)_获得进程和线程信息

    # -*- coding: utf-8 -*- """ 获得线程, 进程 ID,NAME 总结: """ import threading ...

  5. [b0028] python 归纳 (十三)_队列Queue在多线程中使用

    # -*- coding: UTF-8 -*- """ 多线程同时读队列 总结: 1. 会阻塞 if self._jobq.qsize() > 0 进入逻辑,此时被 ...

  6. Python爬虫(十一)_案例:使用正则表达式的爬虫

    本章将结合先前所学的爬虫和正则表达式知识,做一个简单的爬虫案例,更多内容请参考:Python学习指南 现在拥有了正则表达式这把神兵利器,我们就可以进行对爬取到的全部网页源代码进行筛选了. 下面我们一起 ...

  7. [b0022] python 归纳 (八)_多进程_基本使用

    # -*- coding: UTF-8 -*- """ 测试进程使用 multiprocessing.Process 使用: 1. 准备一个函数<fun>,子 ...

  8. [b0018] python 归纳 (四)_运算符重载

    # -*- coding: UTF-8 -*- """ 测试运算符重载 加法 总结: python 运算符表达式其实都是调用 类中方法 __xxx__ + <--- ...

  9. [b0017] python 归纳 (三)_类名当参数传入

    # -*- coding: UTF-8 -*- """ 测试传入类名 总结: 似乎python里面的一切东西都可以当参数传入 函数或者方法 ""&qu ...

随机推荐

  1. 24.Firewalld防火墙

    1.Firewalld防火墙的概述 RHEL/CentOS 7系统中集成了多款防火墙管理工具,其中firewalld是默认的防火墙配置管理工具它拥有基于CLI(命令行界面)和基于GUI(图形用户界面) ...

  2. vue中使用router打开一个新的窗口

    一个单页应用打开一个新的窗口不是很好控制,比如权限的处理,因为原先的页面不会自动刷新,方法很简单: let routeData = this.$router.resolve({ name: " ...

  3. 查询物料单位PAC成本

    select cpp.period_name 期间名称, ccga.organization_id 组织ID, ood.ORGANIZATION_CODE 组织代码, OOD.ORGANIZATION ...

  4. [转]uipath team svn

    本文转自:https://docs.uipath.com/studio/docs/svn-version-control SVN Version Control Suggest Edits Openi ...

  5. 解决Xcode10 Library not loaded: /usr/lib/libstdc++.6造成的crash及报错

    关键字1:dyld: Library not loaded: /usr/lib/libstdc++.6.dylib   Referenced from: 关键字2:Reason: no suitabl ...

  6. TOMCAT 8.5 配置优化以及JVM配置(windows server)

    下载官方的tomcat,我这里用的是TOMCAT 8.5.46,然后解压出来,解压后的目录如下图 一.server.xml配置优化 进入conf目录,打开server.xml 文件 1. 找到 < ...

  7. 团队项目之团队展示&选题

    团队博文:https://www.cnblogs.com/blackpanda/p/11734448.html 一. 团队展示 1.  队名: Black Panda 2.  队员: 郑伟金 3117 ...

  8. SQL Server查询数据库表字段类型

    select b.name,a.name,c.name,a.xprec,a.xscalefrom  syscolumns aleft outer join sysobjects b ON a.id=b ...

  9. [Go] 在golang中使用正则表达式捕获子表达式

    正则匹配并且可以捕获到()这个里面的子表达式的值,linux的grep命令没办法捕获子表达式的值,只能获取到整条正则匹配的内容 package main import "regexp&quo ...

  10. ffmpeg-python 任意提取视频帧

    ▶ 环境准备 1.安装 FFmpeg 音/视频工具 FFmpeg 简易安装文档 2.安装 ffmpeg-python pip3 install ffmpeg-python 3.[可选]安装 openc ...