这个介绍了理论,C,和epoll等,有代码片段:
这个介绍了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挺快的。总之以上是理论探讨。:-)
浙公网安备 33010602011771号