Python 个没有线程的计时器
Python timers with no threading
我有一个 Python flask-socketio 服务器,我想将计时器同步到客户端。我试着在客户端做定时器,但它不能可靠地同步,所以我决定我需要在服务器上做定时器。问题是线程需要服务器进行大量昂贵的处理,我不想处理 eventlet、gevent 或标准线程。有没有一种方法可以在不使用线程的情况下可靠地同步计时器?
我不确定你说的“线程需要大量昂贵的处理”是什么意思,但无论如何,线程与 eventlet 和 gevent 不兼容,所以它无论如何都行不通。
Gevent 和 eventlet 都提供了一个替换模块,使用 greenlets 实现线程中的所有内容。例如,您可以使用以下方法从 eventlet 导入 Timer
class:
from eventlet.green.threading import Timer
就准确性而言,我不确定您的期望是什么。由于 greenlets 是合作的,所以不可能有精确的计时器,所以通常您指定的超时是最小的,因此计时器可能会比请求的时间晚一点,具体取决于其他任务如何与异步循环合作。
我有一个 Python flask-socketio 服务器,我想将计时器同步到客户端。我试着在客户端做定时器,但它不能可靠地同步,所以我决定我需要在服务器上做定时器。问题是线程需要服务器进行大量昂贵的处理,我不想处理 eventlet、gevent 或标准线程。有没有一种方法可以在不使用线程的情况下可靠地同步计时器?
我不确定你说的“线程需要大量昂贵的处理”是什么意思,但无论如何,线程与 eventlet 和 gevent 不兼容,所以它无论如何都行不通。
Gevent 和 eventlet 都提供了一个替换模块,使用 greenlets 实现线程中的所有内容。例如,您可以使用以下方法从 eventlet 导入 Timer
class:
from eventlet.green.threading import Timer
就准确性而言,我不确定您的期望是什么。由于 greenlets 是合作的,所以不可能有精确的计时器,所以通常您指定的超时是最小的,因此计时器可能会比请求的时间晚一点,具体取决于其他任务如何与异步循环合作。