2024-2-27 15:21 /
今日工作总结

1. 了解python中的协程Coroutine,学习Coroutine的基本语法, yeild/send型协程和await/async def等,特别是和与多线程的区别,顺带复习了multi-processing, multi-threading之间的联系。

简单来说,Coroutine和multi-threading一样适用于IO密集型任务,不过通常Coroutine是比thread更能实现高并发的一种方式,关于原因这篇文章剖析得比较到位:
为什么要搞出和用协程呢?总结起来看:
一是节省 CPU,避免系统内核级的线程频繁切换,造成的 CPU 资源浪费。好钢用在刀刃上。而协程是用户态的线程,用户可以自行控制协程的创建于销毁,极大程度避免了系统级线程上下文切换造成的资源浪费。
二是节约内存,在 64 位的 Linux 中,一个线程需要分配 8MB 栈内存和 64MB 堆内存,系统内存的制约导致我们无法开启更多线程实现高并发。而在协程编程模式下,可以轻松有十几万协程,这是线程无法比拟的。
三是稳定性,前面提到线程之间通过内存来共享数据,这也导致了一个问题,任何一个线程出错时,进程中的所有线程都会跟着一起崩溃。
四是开发效率,使用协程在开发程序之中,可以很方便的将一些耗时的 IO 操作异步化,例如写文件、耗时 IO 请求等。
from 《有了多线程,为什么还要有协程?_线程_八两_InfoQ写作社区》
https://xie.infoq.cn/article/c62beed510625a8e128aa9001

也许可以利用Coroutine和mthreading做一下加速。

2. 向组内的朋友咨询GPU,准备和Prof讨论一下这个事情。
3. 继续推进任务,完成一些必要的代码工作。