python - comtypes ndarray 与 ASCOM safearray 问题
问题描述
据说comtypes safearray_as_ndarray 上下文管理器将加快从COM 读取大数组的速度。我用 ASCOM 相机类试过了。ASCOM 可以返回 ImageArray int safearray 和 ImageArrayVariant variant safearray。使用 ImageArrayVariant 时,可以成功完成,但时间远远超过正常的 np.array(tuple) 方式。使用 ImageArray 时,库总是出错
File "C:\ProgramData\Anaconda3\lib\site-packages\comtypes\__init__.py", line 280, in __getattr__
raise AttributeError(name)
我不知道为什么。comtypes doc 的描述如下: 默认情况下,comtypes 将 SAFEARRAY 输出参数逐项转换为 python 对象的元组。在处理大型 SAFEARRAY 时,这种转换可能代价高昂。Comtypes 提供了一个 safearray_as_ndarray 上下文管理器(来自 comtypes.safearray),用于修改此行为以返回 NumPy 数组。这种改变的行为是将 ndarray 放在 SAFEARRAY 内存的副本上,这比为每个项目调用 python 更快。当这失败时,仍然可以逐项创建 NumPy 数组。上下文管理器是线程安全的,因为在一个线程上使用上下文管理器不会影响其他线程上的行为。
谢谢。
解决方案
推荐阅读
- javascript - PUT、PATCH、DELETE 请求不发送数据
- bash - 下载 Google Group 数据时提取的 0 字节文件
- php - 特定的 WHERE 子句
- python - 模块“twitter”没有属性“Twitter”
- c# - .Net Core 2.1 的 HttpClient 挂起
- python - 如何在 python 中获得一个循环以返回原始的 while 语句。
- django - 如何使用 DEBUG = False 在 django 中*始终*记录异常和堆栈跟踪
- python - 如何将两个列表加在一起,避免重复,并为元素排序?
- windows - 无法安装货物树:无法确定视觉工作室生成器
- php - Laravel 5 - 具有嵌套关系的 API 资源