为什么没有 call_at_threadsafe 和 call_later_threadsafe?

Why no call_at_threadsafe and call_later_threadsafe?

我在 Windows 32 位中使用 Python 3.5.2 并意识到 asyncio call_at 不是线程安全的,因此以下代码不会打印 'bomb' 除非我取消注释行 loop._write_to_self().

import asyncio
import threading


def bomb(loop):
    loop.call_later(1, print, 'bomb')
    print('submitted')
    # loop._write_to_self()


if __name__ == '__main__':
    loop = asyncio.get_event_loop()
    threading.Timer(2, bomb, args=(loop,)).start()
    loop.run_forever()

但是我找不到关于为什么实施 call_at_threadsafecall_later_threadsafe 的信息。原因是否存在?

只需使用loop.call_soon_threadsafe来安排loop.call_later:

loop.call_soon_threadsafe(loop.call_later, 1, print, 'bomb')