# 多线程  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. [Hinton] Neural Networks for Machine Learning - Converage

    Link: Neural Networks for Machine Learning - 多伦多大学 Link: Hinton的CSC321课程笔记 Ref: 神经网络训练中的Tricks之高效BP ...

  2. 9.26/27 blog项目

    2018-9-26 18:05:20 放上一个老男孩b站视频连接 :https://shimo.im/docs/VN0BLgAIBdMVSa4S/ b站连接: https://space.bilibi ...

  3. freemarker 中可以直接使用的内置对象

    freemarker 中可以直接使用的内置对象 需要配置一下:springboot中配置 ## Freemarker \u914D\u7F6E ## \u6587\u4EF6\u914D\u7F6E\ ...

  4. ABP之事件总线(4)

    在上一篇的随笔中,我们已经初步完成了EventBus,但是EventBus中还有诸多的问题存在,那么到底有什么问题呢,接下来我们需要看一看ABP中的源码是如何定义EventBus的. 1.第一个点 在 ...

  5. python爬虫重定向次数过多问题

    错误提示如下: raise TooManyRedirects('Exceeded %s redirects.' % self.max_redirects, response=resp)requests ...

  6. python----流程控制

    计算机程序在解决某个具体问题时,包括三种情形,即顺序执行所有的语句.选择执行部分的语句和循环执行部分语句,这正好对应着程序设计中的三种程序执行结构流程:顺序结构.选择结构和循环结构. 事实证明,任何一 ...

  7. 洛谷P1118 数字三角形【dfs】【STL】

    题目链接:https://www.luogu.org/problemnew/show/P1118 题意: 1~n的一个排列,相邻的两项加起来得到下一行. 现在给定最后一行的数字,问最初的1~n的排列是 ...

  8. IAR 跳转路径错误

    拷贝的代码 右键跳转的时候提示路径错误,是因为别人编译的中间文件 .ojb文件在你的电脑上不一样,拷贝代码后第一件事就是清楚obj中间连接文件,然后重新在你的电脑上编译.

  9. java高级精讲之高并发抢红包~揭开Redis分布式集群与Lua神秘面纱

    java高级精讲之高并发抢红包~揭开Redis分布式集群与Lua神秘面纱 redis数据库 Redis企业集群高级应用精品教程[图灵学院] Redis权威指南 利用redis + lua解决抢红包高并 ...

  10. Maven Tomcat Plugin

    <!-- 本地Tomcat --> <dependency> <groupId>org.apache.tomcat.maven</groupId> &l ...