并发编程杂碎小知识

1、操作系统编写的语言:汇编语言,C语言

2、 wins: cmd其实就是一个软件与操作系统打交道
  linux:shell解释器

3、现在摩尔定律越来越不适用了,所以会出现技术革新,比如出现go语言,但并未找到真正更好的办法

4、双击(启动程序)也叫交互式

5、进程的创建 :操作系统底层会调用不同的接口

6、 io阻塞是为了:提升效率
  cpu时间过长:降低一点效率,但为了让用户感觉到并发

7、超时(timeout)
  为防止服务器不能及时响应,大部分发至外部服务器的请求都应该带着 timeout 参数。在默认情况下,除非显式指定了 timeout 值,requests 是不会自动进行超时处理的。如果没有 timeout,你的代码可能会挂起若干分钟甚至更长时间。

  request timeout

  timeout=3 #意思就是超时3s后断开链接

  timeout=(3,7) #timeout传入一个元组(3,7)第一位是connect连接的超时时间,第二位是read读取的超时时间


8、多进程一般都设置为守护进程

9、程序运行理想状态:让代码永远处于就绪态和运行态之间切换

10、进程与进程之间数据默认情况下是无法直接交互的,如果想交互可以借助第三方工具、模块

11、 python解释器内部的包都是用面向对象封装的

12、实现不同机器上通信:

  利用第三方专业的消息队列:

  比如:rabbitmq(吞吐量没kafka高,有消息确认机制), kafka(吞吐量高,无消息确认机制), redis

13、解耦合,消息队列是微服务的基础

14、线程没有id号(可造虚拟id方便线程用,但在任务管理器里是查不到),但有名字 t.name()或t.getName()获取名字
  进程有id号,可在任务管理器里查到

15、若几个线程都属于同一进程,所以id相同

16、GIL的用途:py的垃圾回收机制是线程不安全的(py是解释型语言),cpython的多线程不是真正的多线程,同一时刻,只有一个线程在执行,不能利用多核优势

17、编译型语言(比如python) 是线程安全的

18、分布式锁可能会遇到死锁现象

19、运行程序最理想的状态:

  进程下开多线程 多线程下再利用协程,最大程度的提升团建运行效率

20、多核多线程比单核多线程更差,IO密集型用多线程,CPU(计算)密集型用多进程

21、自己研究: FastApi,django3.0,sanic,tornado:支持异步,有协程

22、io多路复用是阻塞式IO,有阻塞的过程就是阻塞式IO

23、协程 : 保存状态 +切换

posted @ 2020-08-20 16:35  1024bits  阅读(119)  评论(0编辑  收藏  举报