事件循环在线程中运行(通常是主线程),并在其线程中执行所有回调和任务。当一个任务在事件循环中运行时,没有其他任务可以在同一个线程中运行。当一个任务执行一个 表达式时,正在运行的任务被挂起,事件循环执行下一个任务。
要调度来自另一 OS 线程的 ,应该使用 方法。 例如:
几乎所有异步对象都不是线程安全的,这通常不是问题,除非在任务或回调函数之外有代码可以使用它们。如果需要这样的代码来调用低级异步API,应该使用 方法,例如:
要从不同的OS线程调度一个协程对象,应该使用 函数。它返回一个 。查询结果:
为了能处理信号事件循环必须在主线程中运行。
方法 可以和 一起使用,用于在一个不同的操作系统线程中执行阻塞代码,并避免阻塞运行事件循环的那个操作系统线程。
目前没有办法直接从另一个进程(如使用 启动的进程)安排协程或回调。 小节列出了一些可以从管道读取并监视文件描述符而不会阻塞事件循环的 API。 此外,asyncio 的 API 提供了一种启动进程并在事件循环中与其通信的办法。 最后,之前提到的 方法也可以配合 使用以在另一个进程中执行代码。
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.mushiming.com/mjsbk/7109.html