1
2
您可以使用的另一种实现是
实现实际调用的一种方法是使用单独的线程来执行回调。堆需要使用互斥保护,您可以使用条件变量来实现调度。在无限循环中,只需查找下一次执行函数(堆的元素0)并使用条件变量的
|
2
2
你看过吗 sched python标准库中的模块?在一个专用线程上运行调度程序(并且让所有计划的操作都是“将一个绑定的方法及其参数放在一个队列上”,池中的线程从队列中剥离并执行它——就像我在线程的nutshell一章中所写的那样,除了在这种情况下没有调度),应该做您想要做的。 |
3
0
对于“几千个客户机”,您不太可能达到OS线程限制;但是对于所有这些线程,您可能会使用堆栈消耗大量不必要的内存。 看看Twisted做了什么,它允许一个进程多路复用许多事件(包括计时器),这种方式已经证明可以很好地处理大量事件。 您还可以将事件驱动和多进程模型相结合,通过在每台机器上运行多个进程,并在每一个进程中执行事件驱动逻辑,例如一个进程可以处理2000个客户机,您仍然可以运行30个进程(前提是有足够的总体资源),并获得更好的吞吐量,特别是在现代多核硬件上。 |
July · 如何定义数字间隔,然后四舍五入 1 年前 |
user026 · 如何根据特定窗口的平均值(行数)创建新列? 1 年前 |
Ashok Shrestha · 需要追踪特定的颜色线并获取坐标 1 年前 |
Nicote Ool · 在FastApi和Vue3中获得422 1 年前 |
Abdulaziz · 如何对集合内的列表进行排序[重复] 1 年前 |
asmgx · 为什么合并数据帧不能按照python中的预期方式工作 1 年前 |