Efficient and fast Python While loop while using sleep()

前端 未结 3 987
日久生厌
日久生厌 2021-01-31 17:16

I am attempting to communicate with a device over serial using Pyserial. As commands need to be continually sent, they have to be placed in a while loop in Python.

I am

3条回答
  •  一整个雨季
    2021-01-31 17:37

    The slow CPU wasting part is the "do serial sending". The while loop with just a short sleep will use negligible CPU.

    Can you show the serial sending code. There may be a way to speed that up.

    On this rather slow CPU I see this:

    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
    

    Now do some extra work in the loop:

    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
    

    I ran those in the interpreter and stopped each while loop with ctrl-C.

提交回复
热议问题