带有 numpy/ctypes 的环形缓冲区

2024-02-27

我正在开发一个客户端,它将通过 TCP 接收 [EEG] 数据并将其写入环形缓冲区。我认为将缓冲区作为 ctypes 或 numpy 数组非常方便,因为可以为此类缓冲区的任何位置创建一个 numpy“视图”并读取/写入/处理数据,而无需任何复制操作。或者总体来说这是一个坏主意?

但是,我不知道如何以这种方式实现固定大小的循环缓冲区。假设我创建了一个在内存中连续的缓冲区对象。当到达缓冲区末尾时写入数据的最佳方式是什么?

一种可能的方法是当写指针到达缓冲区数组的末尾时从头开始覆盖(已经是旧的)字节。然而,在边界附近,在这种情况下,无法创建某些块(用于处理)的 numpy 视图(或者可以吗?),因为其中一些块仍然可以位于缓冲区数组的末尾,而另一个块已经位于缓冲区数组的末尾。它的开始。我读过不可能创建这样的圆形切片。怎么解决这个问题呢?

UPD:谢谢大家的回答。如果有人也面临同样的问题,here https://github.com/belevtsoff/rdaclient.py/blob/master/src/ringbuffer.py'是我得到的最终代码。


如果您需要 N 字节的窗口,请将缓冲区设置为 2*N 字节并将所有输入写入两个位置:i % N and i % N + N, where i是一个字节计数器。这样缓冲区中始终有 N 个连续字节。

data = 'Data to buffer'
N = 4
buf = 2*N*['\00']

for i,c in enumerate(data):
    j = i % N
    buf[j] = c
    buf[j+N] = c
    if i >= N-1:
        print ''.join(buf[j+1:j+N+1]) 

prints

Data
ata 
ta t
a to
 to 
to b
o bu
 buf
buff
uffe
ffer
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

带有 numpy/ctypes 的环形缓冲区 的相关文章

  • 使用 python 进行串行数据记录

    Intro 我需要编写一个小程序来实时读取串行数据并将其写入文本文件 我在读取数据方面取得了一些进展 但尚未成功地将这些信息存储在新文件中 这是我的代码 from future import print function import se
  • python future 和元组解包

    实现像使用 future 进行元组解包这样的事情的优雅 惯用的方法是什么 我有这样的代码 a b c f x y g a b z h y c 我想将其转换为使用期货 理想情况下我想写一些类似的东西 a b c ex submit f x y
  • Python模块可以访问英语词典,包括单词的定义[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个 python 模块 它可以帮助我从英语词典中获取单词的定义 当然有enchant 这可以帮助我检查该单词是否存在于英语中
  • Python逻辑运算符优先级[重复]

    这个问题在这里已经有答案了 哪个运算符优先4 gt 5 or 3 lt 4 and 9 gt 8 这会被评估为真还是假 我知道该声明3 gt 4 or 2 lt 3 and 9 gt 10 显然应该评估为 false 但我不太确定 pyth
  • 从零开始的 numpy 形状意味着什么

    好的 我发现数组的形状中可以包含 0 对于将 0 作为唯一维度的情况 这对我来说是有意义的 它是一个空数组 np zeros 0 但如果你有这样的情况 np zeros 0 100 让我很困惑 为什么这么定义呢 据我所知 这只是表达空数组的
  • 如何创建一个语句来打印以特定单词开头的单词? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 如何在 python 中打印从特定字母开始的单词 而不使用函数 而是使用方法或循环 1 我有一个字符串 想要打印以 m 开头的单词 S
  • Pandas 数据帧到 numpy 数组 [重复]

    这个问题在这里已经有答案了 我对 Python 很陌生 经验也很少 我已经设法通过复制 粘贴和替换我拥有的数据来使一些代码正常工作 但是我一直在寻找如何从数据框中选择数据 但无法理解这些示例并替换我自己的数据 总体目标 如果有人真的可以帮助
  • 切片 Dataframe 时出现 KeyError

    我的代码如下所示 d pd read csv Collector Output csv df pd DataFrame data d dfa df copy dfa dfa rename columns OBJECTID Object ID
  • python suds SOAP 请求中的名称空间前缀错误

    我使用 python suds 来实现客户端 并且在发送的 SOAP 标头中得到了错误的命名空间前缀 用于定义由element ref 在 wsdl 中 wsdl 正在引用数据类型 xsd 文件 请参见下文 问题出在函数上GetRecord
  • 如何通过在 Python 3.x 上按键来启动和中断循环

    我有这段代码 当按下 P 键时会中断循环 但除非我按下非 P 键 否则循环不会工作 def main openGame while True purchase imageGrab if a sum gt 1200 fleaButton ti
  • 对图像块进行多重处理

    我有一个函数必须循环遍历图像的各个像素并计算一些几何形状 此函数需要很长时间才能运行 在 24 兆像素图像上大约需要 5 小时 但似乎应该很容易在多个内核上并行运行 然而 我一生都找不到一个有据可查 解释充分的例子来使用 Multiproc
  • 在 pytube3 中获取 youtube 视频的标题?

    我正在尝试构建一个应用程序来使用 python 下载 YouTube 视频pytube3 但我无法检索视频的标题 这是我的代码 from pytube import YouTube yt YouTube link print yt titl
  • 如何使用列表作为pandas数据框中的值?

    我有一个数据框 需要列的子集包含具有多个值的条目 下面是一个带有 运行时 列的数据框 其中包含程序在各种条件下的运行时 df condition a runtimes 1 1 5 2 condition b runtimes 0 5 0 7
  • 将 2D NumPy 数组按元素相乘并求和

    我想知道是否有一种更快的方法 专用 NumPy 函数来执行 2D NumPy 数组的元素乘法 然后对所有元素求和 我目前使用np sum np multiply A B 其中 A B 是相同维度的 NumPy 数组m x n 您可以使用np
  • 默认情况下,Keras 自定义层参数是不可训练的吗?

    我在 Keras 中构建了一个简单的自定义层 并惊讶地发现参数默认情况下未设置为可训练 我可以通过显式设置可训练属性来使其工作 我无法通过查看文档或代码来解释为什么会这样 这是应该的样子还是我做错了什么导致默认情况下参数不可训练 代码 im
  • Ubuntu 上的 Python 2.7

    我是 Python 新手 正在 Linux 机器 Ubuntu 10 10 上工作 它正在运行 python 2 6 但我想运行 2 7 因为它有我想使用的功能 有人敦促我不要安装 2 7 并将其设置为我的默认 python 我的问题是 如
  • 无法在前端使用 JavaScript Fetch API 将文件上传到 FastAPI 后端

    我正在尝试弄清楚如何将图像发送到我的 API 并验证生成的token那是在header的请求 到目前为止 这就是我所处的位置 app post endreProfilbilde async def endreProfilbilde requ
  • 您可以将操作直接应用于map/reduce/filter 中的参数吗?

    map and filter通常可以与列表理解互换 但是reduce并不那么容易被交换map and filter 此外 在某些情况下我仍然更喜欢函数语法 但是 当您需要对参数本身进行操作时 我发现自己正在经历语法体操 最终必须编写整个函数
  • 限制 django 应用程序模型中的单个记录?

    我想使用模型来保存 django 应用程序的系统设置 因此 我想限制该模型 使其只能有一条记录 极限怎么办 尝试这个 class MyModel models Model onefield models CharField The fiel
  • 从 Twitter API 2.0 获取 user.fields 时出现问题

    我想从 Twitter API 2 0 端点加载推文 并尝试获取标准字段 作者 文本 和一些扩展字段 尤其是 用户 字段 端点和参数的定义工作没有错误 在生成的 json 中 我只找到标准字段 但没有找到所需的 user fields 用户

随机推荐

  • 通过 Kivy 在 Android 上运行 Tensorflow

    I found 这个答案 https stackoverflow com a 34495029 828184这让我想到了一个想法 你可以在 Android 手机上使用 kivy 而不是使用编译后的张量流图 这样你就可以使用直接与张量流图对话
  • 将数组中的相同值分组

    我有一个数组 里面有一些值 我希望返回另一个数组 该数组的值分组到自己的数组中 所以我想要达到的结果是这样的 var arr 1 1 2 2 2 3 3 4 4 4 4 5 6 var groupedArr 1 1 2 2 2 3 3 4
  • Xamarin.Android 中的测试活动

    我想对活动生命周期的一些交互进行单元测试 我正在开发一个数据绑定库 没有它就无法进行单元测试 安卓也有一些不错的文档 http developer android com tools testing activity testing htm
  • “代码生成器已取消优化 [某些文件] 的样式,因为它超过了最大值“100KB””是什么意思?

    我向我的项目添加了一个新的 npm 包 并在我的一个模块中需要它 现在我从 webpack 收到这条消息 build modulesNote The code generator has deoptimised the styling of
  • SSRS 选择性分页符

    我正在处理的有关财产记录的当前报告在 SSRS 中遇到一些格式问题 我的报告由 6 个在横向视图中对齐的 tablixes 构建而成 旨在保留特定的布局以供潜在的报告打印 第一个 Tablix 包含有关相关财产和所有者的一般信息 该信息将是
  • 如何以编程方式选择 MKUserLocation?

    标题和副标题可以添加到 iOS 显示的用户位置MK用户位置 https stackoverflow com questions 6400880 on mkuserlocation how do i show my own custom me
  • 如何重置向南迁移以捕获 django 模型的当前状态

    我有一个应用程序 目前有 35 次向南迁移 在设置新部署时 我们经常创建新部署 这些需要一段时间才能完成 并且应用程序正在不断发展 添加更多迁移 此外 迁移还包括一些潜在的复杂数据迁移和一些破坏 SQLite3 的自定义迁移 目前这不是一个
  • 像 Instagram 一样带有圆角的文本背景

    我想像 Instagram 一样创建具有背景颜色和圆角的文本 我能够实现背景颜色 但无法创建圆角 到目前为止我所拥有的 下面是上面截图的源代码 void createBackgroundColor self txtView layoutMa
  • CoffeeScript - 编译当前目录和所有子目录中的所有 .coffee 文件

    编译当前目录和所有子目录中的所有 coffee 文件的最简单方法是什么 您可以使用集成的coffee外壳工具 coffee output lib compile src 编译 coffee 文件的目录树src到 js 文件的并行树中lib
  • CMake 行为:使用 Visual Studio 的自定义配置类型需要多次运行 cmake 才能正确显示。这是故意的吗?

    Context 我正在将一个项目从普通 Makefile 迁移到 CMake 以添加对多个编译器 gfortran ifort 和操作系统 Windows Linux 的支持 当我完成整个事情时 我正在尝试简化 CMake 行为并为用户提供
  • 在 data.table 中插入一行

    如果我有一个数据框 set seed 12345 df data frame a rnorm 5 b rnorm 5 我可以通过例如添加一行 df 6 c 5 6 如果我现在在 data table 中执行相同的操作 library dat
  • Google Developers Console API 页面未加载

    在我的 Google 开发者控制台中 我无法打开 API 页面 它显示无法加载错误 并且如果我通过像 https cloud google com compute docs autoscaler loadbalancingsetup htt
  • grep 是如何工作的?

    我想了解如何grep works 当我说grep hello does grep获取 2 个参数 1 要搜索的字符串 即 hello 和 2 路径 或者shell是否转换 变成某事grep可以理解 哪里可以得到源代码grep 我遇到了这个G
  • 在 numpy 数组上“绘制”随机菱形(菱形)(测试哈里斯角点检测)

    我正在尝试为 harris corner detector 函数实现创建一个随机测试 非常普遍且轻微错误 一个在图像中查找角点的函数 在测试中 我想在二进制 numpy 矩阵中创建随机简单形状 很容易知道它们角的坐标 例如矩形 三角形 菱形
  • 交换行 csr_matrix scipy

    我在 scipy 中有一个 256x256 csr matrix 并且有一个我想要应用的新行顺序的列表 我试过这个 def HblockDiag z Hz H z H z returns a 256x256 csr matrix Hz in
  • Jinja,模板渲染后获取一行源代码

    是否可以获取渲染模板的每一行的源代码行 例如 如果我们有如下所示的模板 some expr if true other expr endif 因此 模板渲染后会生成以下文本 some expr other expr 我想获取 some ex
  • 将模拟注入 Spring MockMvc WebApplicationContext

    我正在努力使用 Spring boot 测试 通过 JUnit4 和 Spring MockMvc REST 服务适配器 适配器只是将向其发出的请求传递给另一个 REST 服务 使用自定义RestTemplate 并将附加数据附加到响应中
  • 迭代 Makefile 中的目录列表

    我想在多个目录中执行任务 但到目前为止还没有找到 类似 makefile 的解决方案 我知道这是一个经常被问到的问题 并且我知道如何解决子 makfiles 等问题 但我正在寻找更简单的东西 而不是做 copy cd module1 mkd
  • 如果您之前将双精度值初始化为零,则将双精度值与零进行比较是否正确?

    我了解到比较双重使用 这不是一个明智的做法 但是我想知道检查双精度是否已初始化是否危险 例如 知道变量 doubleVar 如果已初始化则不能为零 那么这样做安全吗 Foo Foo doubleVar 0 0 of type double
  • 带有 numpy/ctypes 的环形缓冲区

    我正在开发一个客户端 它将通过 TCP 接收 EEG 数据并将其写入环形缓冲区 我认为将缓冲区作为 ctypes 或 numpy 数组非常方便 因为可以为此类缓冲区的任何位置创建一个 numpy 视图 并读取 写入 处理数据 而无需任何复制