zoukankan      html  css  js  c++  java
  • 并发编程(二)

    网络编程(中)

    进程间的通信(multiprocess.queue)

    主要运用:队列; 生产消费

    相当于内存中产生一个队列空间,可以存放多个数据,但数据的顺序是由先进去的排在前面的。

    生产者与消费者

    生产者:生产数据的

    消费者:使用数据的

    例子:通过队列,生产者把数据添加到队列中,消费则从队列中获取数据

    线程基础

    ==什么是线程==

    线程与进程都是虚拟单位,目的是为了更好的描述某种事物.

    ​ 进程:资源单位

    ​ 线程:执行单位

    开启一个进程,一定会有一个线程,线程才是真正执行者.

    ==为什么使用线程==

    节省内存资源

    开启进程:

    1. 开辟一个名称空间,每开启一个进程都会占用一份内存资源.
    2. 会自带一个线程

    开启线程:

    1. 一个进程可以开启多个线程
    2. 线程的开销远小于进程

    注意:线程不能实现并行,线程只能实现并发,进程可以实现并行.

    举例:内存就像一个工厂,子进程就像一个工厂车间,线程就像车间内的流水线.

    GIL全局解释器锁

    在多线程环境中,python虚拟机按以下方式执行:

    1. 设置GIL;
    2. 切换到一个线程去运行;
    3. 运行指定数量的字节码指令或者线程主动让出控制(可以调用time.sleep(0));
    4. 把线程设置为睡眠状态
    5. 解锁GIL;
    6. 再重复以上所有步骤.

    让并发变成串行,牺牲了执行效率,保证了数据安全.

    在程序并发执行时,需要修改数据时使用.

    我把月亮戳到天上 天就是我的 我把脚踩入地里 地就是我的 我亲吻你 你就是我的
  • 相关阅读:
    【LeetCode 15】三数之和
    【LeetCode 14】最长公共前缀
    【LeetCode 13】罗马数字转整数
    【LeetCode 12】整数转罗马数字
    【LeetCode 11】盛最多水的容器
    【LeetCode 10】正则表达式匹配
    【LeetCode 9】回文数
    【LeetCode 8】字符串转换整数 (atoi)
    【LeetCode 7】整数反转
    【LeetCode 6】Z 字形变换
  • 原文地址:https://www.cnblogs.com/zhulipeng-1998/p/12863935.html
Copyright © 2011-2022 走看看