Das könnte man auch so schreiben:
self._port.write("{} {}\r\n".format(device_ID, data).encode())

Auch hier wieder aufpassen wegen dem Lock:

if not self._lock.acquire(timeout=2):
            return
try:
     hier kommt gefährlicher Code
except:
     Behandlung der Exception oder pass
finally:
     self._lock.release()