# 多线程  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. CentOS 6.7 下 Squid 代理服务器 的 安装与配置

    GFW 封锁了 HTTP/Socks5 代理,HTTP 代理是关键词过滤,Socks5 代理则是封锁协议.不过某些特殊的低端口并没有这么处理,已知的有 21,25. 20端口已经被封杀,21端口目前会 ...

  2. 使用CollectionViewSource,通过Xaml绑定自动排序

    这个是一个完成分组和排序功能的Datagrid,同样只是简单的绑定到List集合,后台不用额外的代码,所有功能都在Xaml中完成: 首先在UI中定义CollectionViewSource资源,在这里 ...

  3. nginx-启动|关闭|重新加载配置文件的命令

    1.1 进入操作目录 D: cd D:\NginxTest\nginx-1.10.2 1.2 启动指令 nginx -c conf\nginx.conf 1.3 关闭指令 nginx -s stop ...

  4. [原]Jenkins(四)---Jenkins添加密钥对

    /** * lihaibo * 文章内容都是根据自己工作情况实践得出. *版权声明:本博客欢迎转发,但请保留原作者信息! http://www.cnblogs.com/horizonli/p/5332 ...

  5. 7.11js的总结

    <!DOCTYPE html> <html> <head> <title>js的内置全局函数</title> <script type ...

  6. A - Wall

    Once upon a time there was a greedy King who ordered his chief Architect to build a wall around the ...

  7. Java面向对象进阶篇(抽象类和接口)

    一.抽象类 在某些情况下,父类知道其子类应该包含哪些方法,但是无法确定这些子类如何实现这些方法.这种有方法签名但是没有具体实现细节的方法就是抽象方法.有抽象方法的类只能被定义成抽象类,抽象方法和抽象类 ...

  8. 异常详细信息: System.ArgumentException: 不支持关键字: “metadata”。

    ASP.NET MVC中报的一个错误... 异常详细信息: System.ArgumentException: 不支持关键字: “metadata”. 其实这个是我修改web.config文件造成的, ...

  9. 初试 Entity Framework Core 的多对多映射

    今天在博问中看到一个关于 EF Core 的提问 ef core 2.0 多对多查询的问题,由于还没使用过 EF Core 的多对多映射,于是参考 EF Core 帮助文档快速写了个 .net cor ...

  10. [No0000FB]C# 命名空间(Namespace)

    命名空间的设计目的是提供一种让一组名称与其他名称分隔开的方式.在一个命名空间中声明的类的名称与另一个命名空间中声明的相同的类的名称不冲突. 定义命名空间 命名空间的定义是以关键字 namespace  ...