Я ни в коем случае не эксперт по этому вопросу, но я продолжаю находить, что количество дополнительных тонкостей, которые требуются при использовании threading
, не стоит усилий, если вместо этого я могу распараллелить процессы.
Третий модуль, который вы не упомянули среди альтернатив, - subprocess
.
РЕДАКТИРОВАТЬ по запросу OP: Вы можете добиться параллельной обработки, создав отдельные сценарии для последовательных интерфейсов. Это короткая демонстрация, предполагающая, что оба файла находятся в одном каталоге.
Файл com.py
- серийный скрипт - Это просто пародия, но идея в том, что скрипт работает автономно и использует только stdin и stdout для связи с мастер-программой.
import sys
counter = 0
while True: # The program never ends... will be killed when master is over.
counter += 1
sys.stdin.readline()
sys.stdout.write('Serial from com1 is %d\n' % counter)
sys.stdout.flush()
Файл master.py
- основная программа
from subprocess import Popen, PIPE
from time import sleep
p = Popen(['python', './com.py'], stdin=PIPE, stdout=PIPE, stderr=PIPE)
print "serial communication started." # com.py is working but we moved on!
for i in range(3):
p.stdin.write('<command-here>\n')
print "comand sent."
print "received : %s" % p.stdout.readline()
sleep(1)
Наконец, это дамп ожидаемого результата:
mac@jabbar:~/Desktop$ ./master.py
serial communication started.
comand sent.
received : Serial from com1 is 1
comand sent.
received : Serial from com1 is 2
comand sent.
received : Serial from com1 is 3
НТН!