# 多线程  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. [Tensorflow] RNN - 03. MultiRNNCell for Digit Prediction

    Ref: http://blog.csdn.net/u014595019/article/details/52759104 Time: 2min Successfully downloaded tra ...

  2. [Android] Java Basic : preview

    基础教学:lecture, video, lecturer: Matt Stoker Java教学:http://www.runoob.com/java/java-intro.html[菜鸟教程,非常 ...

  3. akka pubsub example

    测了一个小时的 Pubsub 模式,发现这个模式和自己预期的不太一样,具体表现在: 1. 当 subscriber 订阅了某个 topic 并附带 groupName 时,如果 publish 发布的 ...

  4. js的微任务和宏任务

    1.机制如下: 注意一点: 宏任务需要多次事件循环才能执行完,微任务是一次性执行完的: 2.宏任务macrotask: (事件队列中的每一个事件都是一个macrotask) 优先级:主代码块 > ...

  5. Mac 安装HomeBrew 出错

    错误如下: error: could not lock config file /usr/local/Homebrew/.git/config: Permission denied fatal: co ...

  6. Python 读、写、追加csv文件详细以及注意事项

    一.利用csv库创建文件 首先导入csv文件 import csv 根据指定的path创建文件: def create_csv(path): with open(path, "w+" ...

  7. python 解释器

    原文 Python 能让程序紧凑, 可读性增强. 用 Python 写的程序通常比同样的 C, C++ 或 Java 程序要短得多, 这是因为以下几个原因: 高级数据结构使你可以在单独的语句中也能表述 ...

  8. pycharm平台下的Django教程(转)

    本文面向:有python基础,刚接触web框架的初学者. 环境:windows7   python3.5.1  pycharm专业版  Django 1.10版 pip3 一.Django简介 百度百 ...

  9. Men and women can't be 'just friends

    Men and women can't be 'just friends' Can heterosexual men and women ever be "just friends" ...

  10. 洛谷 P1583魔法照片 & P1051谁拿了最多奖学金 & P1093奖学金

    题目:https://www.luogu.org/problemnew/show/P1583 思路:sort sort sort //#include<bits/stdc++.h> #in ...