Ну такие задачи возникают регурярно, и рецепт давно известен. Под венду есть специальный драйвер, который занимает порт и создает несколько виртуальных с которыми уже и работают приложения.В линуксе тоже есть программы реализующие подобное например
http://www.ant.uni-bremen.de/whomes/rinas/nullmodem/ .
Также в лине обычно из коробки есть утилита socat. Она вроде как умеет создавать псевдотерминал (PTY) в режиме мастер\слейви что по идее должно позволять двум приложениям работать с одним портом через PTY. Хотя это только в теории, на практике я это не использовал так что гугли “socat waitslave”
http://www.dest-unreach.org/socat/doc/socat.htmlУчитывая что у вас фигурирует crontab вангую что вам нужно под линуксом.
В лине последовательные порты доступны через файлы устройств в каталоге /dev. Вообще линукс, позволяет открыть устройство или любой файл более, чем одному процессу одновременно. К сожалению, это редко работает хорошо с tty-устройствами. Поэтому разработчики договорились о Lock файлах. Грубо говоря когда приложение хочет чтото с портом делать, оно проверяет наличие лок-файла, если его нет, то можно читать-писать в порт(файл), иначе жди пока освободиться\выводи еррор.
Но это все лирика, наверняка раз вы задаете вопрос на форуме пайтона то и используете пайтон и не читаете напрямую из/в файл, а используете модуль serial. Но опять же это не точно, а всего лишь мое предположение.
Поэтому ваш топик ставит больше вопросов чем дает ответов:
Какая ОС используется?
Программа1 и програма2 это ваши программы алгоритм которых вы можете поменять или сторонние?
Насколько часто программа1 опрашивает порт?
Программа1 держит порт постоянно или между опросами отпускает?
Программа1 и программа2 должны постоянно работать с одним и тем же портом или это единичный частный случай, конкретно в вашей ситуации?
Знают ли программы о существовании друг друга?
Если программы на пайтоне, то как они работают с портом?
В зависимости от этого и нужно принимать решение:
Или писать\искать демон который будет держать порт, и отдавать данные приложениям через pty.
Или придумать способ коммуникации между программами, чтобы программа 1 отдавала на время порт программе2 по требованию последней.