背景:
实际项目中要使用pyqt/pyside技术,涉及到qt和asyncio的事件循环,并需要使用到qt的信号(Signal)和槽(Slot)机制,从底层了解事件循环的原理使得后续工作更好入手。
事件循环是什么?
事件循环(Event Loop)是一种用于处理和调度异步任务的机制。它通常用于编写异步编程,特别是在处理IO密集型任务时非常有用。事件循环通过不断地检查事件队列中是否有待处理的事件,并按照特定的顺序处理它们。
在事件循环中,程序会不断地轮询事件队列,如果队列中有待处理的事件,事件循环会将它们取出并交给相应的处理器进行处理。处理完一个事件后,事件循环会继续轮询事件队列,直到队列为空或者程序被要求退出。
为什么要使用事件循环(目的)?
确保异步任务的调度和执行,并保证线程安全。
使用python实例来逐步了解事件循环:
可以先了解一下生产者消费者模型能够帮助更好的了解事件循环,使用demo了解事件循环的原理,最后类比qt的信号和槽机制。
先了解生产者消费者模型:生产者、消费者、缓冲区。生产者生产物品放入到缓冲区;若缓冲区为空,消费者就等待;若不为空,消费者从缓冲区取走物品。
此例中:两个生产者进程分别1s生产1个orange,2s生产一个apple,每生产一个就放入队列缓冲区中(队列缓冲区理解为队列即可,先放进去的先消费,后放进去的后消费,类似于排队ÿ