首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python并发- CAN总线

Python并发- CAN总线
EN

Stack Overflow用户
提问于 2020-06-17 23:37:18
回答 1查看 510关注 0票数 1

我正处于开发一个可扩展的基于CAN的硬件测试系统的初期阶段。测试系统的两个主要功能是记录总线上的所有流量并执行测试用例。测试用例主要由接收和发送CAN消息组成,同时评估消息数据有效载荷的内容。还将有一系列测试用例,这些测试用例必须与串行控制设备集成。

由于日志记录的重要性,我一直在考虑一个基于并发的程序。但我不确定我应该实现哪种形式的并发。我读过关于asyncIO、线程和多处理的文章。所以我对他们每个人都有一个高层次的看法。

我还在使用python库,这个库似乎内置了asyncIO,因此我相信asyncIO应该很好。我担心,如果测试用例协同处理不够快,我可能不得不使用asyncIO建立某种缓冲。公共汽车速度500 bus。CAN总线上有两个模块。最高的消息频率是20 is,我想这足够asyncIO运行2个协同器的时间。我还关注可伸缩性。

我的假设正确吗?使用asyncIO应该很好吗?

任何和所有的输入都是非常感谢的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-18 01:43:35

考虑到您的项目涉及网络和进程间通信,asyncIO应该是最依赖和高度结合的并发方法。除非您在主机之间进行大量通信,否则不太可能需要线程或多处理。即使这样,生成进程或线程也会带来很大的开销,如果不小心使用,甚至可能会减慢的执行时间。

我的最后一个建议是现在坚持使用asyncIO,一旦您有了项目的原型,就可以尝试将线程/多处理结合起来,看看是否注意到了速度的提高。有些模块(如timeit )正是实现这一目的的最佳选择。如果您确实选择了使用asyncIO线程,那么有一些非常有用的事件循环方法可以与线程很好地交互。参见链接:https://docs.python.org/3/library/asyncio-dev.html#asyncio-multithreading

祝你好运!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62440045

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档