Исходный текст на питоне. Тут есть тонкость... Потоки (Thread) в питоне реализованы не очень адекватно. Поэтому, если в С-программе один поток ВЫВОДИЛ на консоль, а другой, в это же самое время ВВОДИЛ и всё это нормально работало, то в питоне такого нет.
Максимум, что я успеваю ввести во время секундной паузы вывода - одну букву. Поэтому здесь командой выхода из цикла является не слово "exit", а буква 'q':
import threading
import time
flag = True
def controller():
"""Функция ожидания команды остановки"""
global flag
# Бесконечный цикл ввода команд
while True:
in_str = input()
print("Ввели '{}'".format(in_str))
if in_str == 'q': # Введена команда останова?
flag = False
return
"""Главная функция программы"""
# Запускаем нить управления
t = threading.Thread(target=controller)
t. start()
# Основной цикл обработки
while flag:
# Просто что-то делаем... Ну, хотя бы - спим!
time.sleep(1)
print("Я работаю...")