jht*_*ong 29 python while-loop pyserial
我试图使用Pyserial通过串口与设备通信.由于需要不断发送命令,因此必须将它们放在Python中的while循环中.
我目前正在使用这段代码,并看看python进程需要100%的CPU:
while True:
#do some serial sending here
time.sleep(0.2)
Run Code Online (Sandbox Code Playgroud)
这段代码有效.但是,发送速度很慢.我试图通过减少sleep间隔来加快速度,但似乎加载CPU太多了.
简而言之,是否有任何方法可以永久有效地迭代while循环,同时仍然保持较低的CPU资源消耗?
Joh*_*ooy 57
缓慢的CPU浪费部分是"执行串行发送".只需短暂睡眠的while循环将使用可忽略不计的CPU.
你能展示一下串口发送代码吗?可能有办法加快速度.
在这个相当慢的CPU上我看到了这个:
import time
while True: time.sleep(0.2) # 0% CPU
while True: time.sleep(0.02) # 0% CPU
while True: time.sleep(0.002) # 0.5% CPU
while True: time.sleep(0.0002) # 6% CPU
while True: time.sleep(0.00002) # 18% CPU
Run Code Online (Sandbox Code Playgroud)
现在在循环中做一些额外的工作:
import time
while True: range(10000) and None; time.sleep(0.2) # 1% CPU
while True: range(10000) and None; time.sleep(0.02) # 15% CPU
while True: range(10000) and None; time.sleep(0.002) # 60% CPU
while True: range(10000) and None; time.sleep(0.0002) # 86% CPU
Run Code Online (Sandbox Code Playgroud)
我在解释器中运行它们并使用ctrl-C停止每个循环.
关于您对约阿希姆答案的评论:
然后,您的微控制器代码需要重新设计。否则,您只是将通用计算机变成一个笨拙的“微控制器”,该微控制器会反复遍历不必要的代码,因此可以100%占用CPU。您不正确使用计算机的另一个症状是,硬件电动机的速度取决于您通过串行接口向计算机发送命令的速度。您需要使用将承载高级逻辑的计算机“命令”它。而且您的微控制器需要处理电动机的低级重复控制。
| 归档时间: |
|
| 查看次数: |
50182 次 |
| 最近记录: |