总结:

  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. Ubuntu Server中安装keepalived

    场景 Keepalived的作用是检测web服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的web服务器从系统中剔除,当web服务器工作正常后Kee ...

  2. js的委托事件----Vue

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. HTTP中的Accept-Encoding、Content-Encoding、Transfer-Encoding、Content-Type

    Accept-Encoding和Content-Encoding Accept-Encoding和Content-Encoding是HTTP中用来对采用何种压缩格式传输正文进行协定的一对header. ...

  4. iOS中点击按钮复制指定内容

    话不多说,直接上图和代码:

  5. PHP生成唯一ID

    前言 PHP uniqid()函数可用于生成不重复的唯一标识符,该函数基于微秒级当前时间戳.在高并发或者间隔时长极短(如循环代码)的情况下,会出现大量重复数据.即使使用了第二个参数,也会重复,最好的方 ...

  6. Django模版中加载静态文件配置详解

    .settings.INSTALLED_APPS下添加:django.contrib.staticfiles .settings.py下添加:STATIC_URL = '/static/' . ()在 ...

  7. 2. Linux-3.14.12内存管理笔记【系统启动阶段的memblock算法(2)】

    memory:表示可用可分配的内存: 结束完memblock算法初始化前的准备工作,回到memblock算法初始化及其算法实现上面.memblock是一个很简单的算法. memblock算法的实现是, ...

  8. python简单处理excel方法

    python自带xlrd和xlwt模块用来处理excel,但总觉得xlwt模块用着别扭,于是按自己的习惯重新封装了一个 # coding=utf- import xlrd # 读模块 import x ...

  9. LeetCode解题笔记 - 2. Add Two Numbers

    2. Add Two Numbers You are given two non-empty linked lists representing two non-negative integers. ...

  10. BZOJ1391/LG4177 「CEOI2008」order 最大权闭合子图

    问题描述 BZOJ1391 LG4177 题解 最大权闭合子图,本质是最小割 在任务和机器中间的边之前权值设为INF,代表不可违背这条规则 本题的租借就相当于允许付出一定代价,违背某个规则,只需要把中 ...