# 多线程  VS 多进程

- 程序:一堆代码以文本形式存入一个文档

- 进程:  程序运行的一个状态

  -   包含地址空间、内存、数据栈等

  -  每个进程由自己完全独立的运行环境,多进程共享数据是一个问题

- 线程

  -  一个进程的独立运行片段,一个进程可以由多个线程

  -  轻量化的进程

  -  一个进程的多个线程间共享数据和上下文运行环境

  -  共享互斥问题

- 全局解释器锁(GIL)

  -  Python代码的执行是由python虚拟机进行控制

  -  在主循环中只有一个控制线程在执行

- Python包

  -  thread:有问题,不好用,python3改成了_thread

  -  threading:通行的包

- 案例01:顺序执行,耗时比较长

- 案例02:改用多线程,缩短总时间,使用_thread

- 案例03:多线程,传参数

- threading的使用

  - 直接利用threading.Thread生成Thread实例

    1、t = threading.Thread(target=xxx, args=(xxx, ))

    2、t.start():启动多线程

    3、t.join():等待多线程执行完成

    4、案例04

    5、案例05:加入join后比较跟案例04的结果的异同

    - 守护线程 - daemon

      -   如果在程序中将子线程设置成守护线程则子线程会在主线程结束的时候自动退出

      -  一般认为,守护线程不重要或者不允许离开主线程独立运行

      -  守护线程案例能否有效果跟环境相关

      -   案例06非守护线程

      -  案例07守护线程

    - 线程常用属性

      -  threading.currentThread:返回当前线程变量

      -  threading.enumerate:返回一个包含正在运行的线程的list,正在运行的线程指的是县城启动后

      -  threading.activeCount:返回正在运行的线程数量,效果跟 len(threading.enumerate)

      - thr.setName: 给线程设置名字

      - thr.getName: 得到线程的名字 

    - 直接继承自threading.Thread

      - 直接继承Thread

      - 重写run函数

      - 类实例可以直接运行

      - 案例09

    - 直接继承自threading.Thread

      - 直接继承Thread

      - 重写run函数

      - 类实例可以直接运行

      - 案例09 

- 案例10 工业风案例 

-    共享变量

    共享变量: 当多个线程同时访问一个变量的时候,会产生共享变量的问题

    

   

多线程2.md的更多相关文章

  1. VC 运行时库 /MD、/MDd 和 /MT、/MTd

    这里总结下他们的区别,后面的那个'd'是代表DEBUG版本,没有'd'的就是RELEASE版本了. 首先说/MT /MT是 "multithread, static version ” 意思 ...

  2. /MD, /MDD, /ML, /MT,/MTD(使用运行时库)

    1. VC编译选项 多线程(/MT)多线程调试(/MTd)多线程 DLL (/MD)多线程调试 DLL (/MDd) 2. C 运行时库                                 ...

  3. Error C1189: #error: Please use the /MD switch for _AFXDLL builds

    在VS 2013中编译程序时出现错误: 错误提示1: error C1189: #error : Building MFC application with /MD[d] (CRT dll versi ...

  4. VC编译选项 多线程(/MT)

    VC编译选项 多线程(/MT)多线程调试(/MTd)多线程 DLL (/MD)多线程调试 DLL (/MDd)C 运行时库                        库文件Single threa ...

  5. VC编译选项 md /mdd /ml /mt/mtd

    VC编译选项 多线程(/MT)多线程调试(/MTd)多线程 DLL (/MD)多线程调试 DLL (/MDd)C 运行时库                        库文件Single threa ...

  6. Error C1189: #error: Please use the /MD switch for _AFXDLL builds(转)

    原文转自 https://www.cnblogs.com/zwh0214/p/6048360.html 在VS 2013中编译程序时出现错误: 错误提示1: error C1189: #error : ...

  7. VC运行时库(/MD、/MT等)

    VC项目属性→配置属性→C/C++→代码生成→运行时库 可以采用的方式有:多线程(/MT).多线程调试(/MTd).多线程DLL(/MD).多线程调试DLL(/MDd).单线程(/ML).单线程调试( ...

  8. VS 运行库MT、MD的区别

    https://www.jianshu.com/p/f43afc1d5946 VC项目属性→配置属性→C/C++→代码生成→运行时库 可以采用的方式有:多线程(/MT).多线程调试(/MTd).多线程 ...

  9. VC运行时库/MD、/MDd、/MT、/MTd说明

    http://blog.csdn.net/holybin/article/details/26134153 VC运行时库设置:VC项目属性->配置属性->C/C++->代码生成-&g ...

随机推荐

  1. [IR] Concept Search and PLSA

    [Topic Model]主题模型之概率潜在语义分析(Probabilistic Latent Semantic Analysis) 感觉LDA在实践中的优势其实不大,学好pLSA才是重点 阅读笔记 ...

  2. mysql添加字段并且设置默认值

    ALTER TABLE task ADD uploadStatus TINYINT(4) DEFAULT '0' COMMENT '上传状态';

  3. Flask框架(2)-JinJa2模板

    为了把业务逻辑和表现逻辑分开,Flask把表现逻辑移到JinJa2模板,模板是一个包含响应文本的文件.它用占位变量表示动态部分,其具体要从请求上下文才知道. 把真实值替换掉占位变量成为渲染,JinJa ...

  4. JQuery EasyUI DataGrid获取当前行

    1.获取当前行索引 var rowIndex = $('#dg').datagrid('getRowIndex', row); 2.根据索引删除当前行 $('#dg').datagrid('delet ...

  5. ngxs 状态管理器

    官网文档 ng6,rxjs6.0.0,ngxs3.0.1 λ ng new ngxs --style=styl --routing --skip-install λ cd ngxs λ yarn λ ...

  6. mysql 登录远程数据库

    mysql -h${hostIP} -P${hostPort} -u${userName} -p${passwd}

  7. easyui---editgrid

    on 点击新增用户,不是弹出一个一个dialog,而是直接在表格下面增加一行可编辑的,然后点击保存就可以新增 第一步:加一个toolbar,在handler中当点击新增用户,会调用datagrid的a ...

  8. easyui Dialog 去边框

    使用Url页面显示 panel-body 的内容, 因页面高度大于iframe高度,右侧则会出现边框, 如果页面显示的内容高度真实大于iframe高度,那出现边框是很正常. 我的问题就是有内部页面 的 ...

  9. asp.net Ajax调用Aspx后台方法

    Ajax调用的前提(以aspx文件为例:) 1.首先需要在aspx文件后台中引用using System.Web.Services; 2.需要调用的方法必须是公共的(public).静态的(stati ...

  10. js callback 和 js 混淆

    function test(a,callback){ a+=100; callback(a) } function abc(a){ a+=100; alert(a); } test(5,abc) js ...