这个介绍了理论,C,和epoll等,有代码片段:

Typical I/O models - Blocking IO, Non-Blocking IO, Signal Driven IO, Asynchronous IO, IO Multiplexing

这个介绍了python,select:

Asynchronous programming. Blocking I/O and non-blocking I/O - Blog | luminousmen

偶尔看到一些代码在定义函数时,在def那一行后面会加一个->。这玩意有个专门的名词叫type hint, 即类型提示。
官方网站:https://www.python.org/dev/peps/pep-0484/
告诉你期待的输入类型和输出类型。将动态类型函数改为静态类型函数并不能使计算加快;就算你静态限定了int,输入为float的时候也不会报错,输出也不会变成期待的int类型。

python中的类型提示(定义函数时加入箭头->)_木盏-CSDN博客

Redis(六)管道(Pipelining) - 怀瑾握瑜XI - 博客园

再如机械硬盘上一大堆大个的图片,比如平均5MB要进行人脸识别,读数据和识别内存里的数据都慢。除了异步IO外,还可以做成一个读线程和一个识别线程。CPU发出读请求后硬盘忙着,CPU不是干等着,而是去计算。以上是大概其的意思。如果一个线程:开始读-干等-读到了-开始识别-识别完,CPU做计算时硬盘闲着。

多线程比单线程编程麻烦。如果能像下面这样就好了:

while (1) {
  read(buf, 4MB);
  // 预读。linux kernel开始把接下来的4MB往block cache里弄;不出错不阻塞不改file pos.
  read(NULL, 4MB);
  calc(buf);
}

Windows下打开文件也是CreateFile,它的参数里可以给个提示:SEQUENTAIL_SCAN或RANDOM_ACCESS,我没有体会到明显差别。还有SSD的read挺快的。总之以上是理论探讨。:-)

posted on 2022-02-17 10:13  华容道专家  阅读(36)  评论(0)    收藏  举报