如何在Rust中收集传感器数据并使其在Python中可查询/可用?

时间:2018-04-24 07:52:59

标签: python rust

如何使用Rust收集传感器数据的时间序列/流,然后从Python获取此数据(而Rust继续收集数据)?

目标是让Rust继续收集数据并允许Python调用允许查询/检索此数据的函数。例如,过去5分钟内的所有观察结果。

这是否可以在不复制内存的情况下实现(类似于numpy数组的视图),或者在Python运行时接收内存时是否必须复制内存?

如果需要复制内存,那么在Rust中运行它的运行时成本与在C中执行它的成本相比如何?与Rust相比,C会更简单/更容易实现吗(作为新手C程序员,我喜欢Rust提供的安全/工具)?

总之,我想了解如何:

  • 收集传感器数据并继续在Rust中在后台收集
  • 允许从Python中查询Rust中收集的数据
  • 从Python查询时是否需要复制数据,或者是否可以实现类似于numpy的内存视图?
  • 如果需要复制数据,那么开销与C相比如何?
  • 实现这个的复杂性如何与Rust相比?C?

1 个答案:

答案 0 :(得分:0)

你的问题是模糊的回答是正确的,让我建议你一些方法。

1。使用中间层

您可以使用某种数据库(例如sqlite,postgresql,...),文件系统存储(纯文本文件,套接字),甚至可以使用(JSON)API构建Web服务器。

根据你想要使用的东西,有一切箱子(纯文本是std,sqlite,postgres,diesel,hyper,serde等)。

关于这个实现的巧妙之处在于它是独立的编程语言,如果你决定稍后用Java重新编写代码(无论出于何种原因:)),你只需要改变java读出代码的方式数据库/ socket / webserver。

2。使用FFI

您可以在github.com查看alex中的示例,但请注意您可以在FFI中使用的类型,例如整数类型,如i32,u32,i8,指针,浮点数,但像字符串之类的东西可能会变得很毛茸茸,所以如果只使用整数,那就使用它。