beivevТут вот какое дело. Поведение зависит от ОС. Я сейчас проверил для пары устройств, одно это ADC, второй GPS приемник.
В Винде (XP) нельзя одновременно двум клиентам подключиться к одному COM порту - кто первый, того и порт. При неудаче подключения возбуждается исключение serial.serialutil.SerialException. Вот его можно отлавливать в вашем коде.
В Линуксе можно подключиться, но например считать второму клиенту пока первые осуществляет циклическое чтение не удается. Почему то возбуждается то OSError, то SerialException. Однако операция записи проходит без ошибок. Не могу достоверно сказать работает ли оно как надо. Возможно в линуксе есть разделение по направлению потоков ввода вывода, точно сказать не могу.
Поэтому если вы пишите свой код для Windows платформ только, вам проще, делаете что то типа:
for attempt in xrange(number_of_attempts):
try:
ser = serial.Serial(port)
except serial.serialutil.SerialException:
time.sleep(1)
else:
raise Exception('Can not open COM port after {} attempts'.format(number_of_attempts)