#Python #ml
Orkhon是用于机器学习的Rust框架,用于运行/使用用Python编写的推理/预测代码,冻结模型和处理未知(unseen)数据。
orkhon
#async #await
在这篇文章里,作者讨论了如果在应用中取消正在进行的异步任务,这非常有用,主要是因为对它们的结果不再有任何兴趣,所以继续操作就会成为资源占用。比如在超时范围内没有收到响应并且应该将错误发送回用户,则应该取消子操作。
先来看看在同步中如何取消任务:
例如
在C#中,使用CancellationToken类型的变量传递给每个方法,该方法是可取消工作流的一部分。这些方法可以不时地检查CancellationToken.IsCancellationRequested,以便发现父任务是否已请求取消。在这种情况下,子任务可以提前返回(例如通过抛出异常)。
其他语言是这种方法的变体:
Go使用Context结构将取消请求传播到子任务。在Go中,取消请求通过Channel发出信号,因为它可以轻松地使程序等待取消请求或来自其他来源的状态更新。
Java利用线程局部中断状态。如果一个线程获得.interrupted()
,那么如果不处理异常,某些操作将抛出并强制返回子任务。这可以被视为某种线程局部的CancellationToken,它在方法之间没有明确地传递。它具有不能在异步上下文中使用的缺点。
这些行为具有一组特定的共性:
在async/await异步中如何取消:
Rust之外的语言,和同步取消任务的模式类似:
比如,C# async Tasks
通过CancellationToken发出取消信号。许多.NET
core框架函数支持此参数以传播取消请求。Kotlin协程标准库识别取消请求并允许操作在取消时提前中止。Javascript没有取消的标准化类型,由于异步Javascript函数将始终运行完成,因此该机制还需要遵循上述所描述的模式。C++
协程可以使用cppcoro库中定义的CancellationToken。
Rust对Cancellation的支持与其他支持async/await的语言有所不同。
这些特性有优点也有缺点:
更多内容请查看原文。
#await
官方核心成员无船大佬在博客上披露,异步await语法的最终提议是继续推进后缀关键字语法: future.await
。另外无船大佬还针对Rust语言设计给出了两点说明:
@await
语法,也是因为权衡成本的问题,因为引入新的符号会带来成本。下一步:
准备在Rust 1.37稳定版中引入async/await的最小稳定化版本, 1.37将于8月中旬发布,并于7月4日发布。这不会是async/await功能的结束 - 最小功能将会有很多扩展 - 但对于每个想要使用Rust进行高性能网络服务的人来说,这将是一个重要的里程碑。
Read More
#metrics
基于trait抽象,提供稳定API,支持Prometheus
metrics
#audio
Read More
#cli
leg