Ответить на ввод Python изнутри в другом потокеPython

Программы на Python
Anonymous
Ответить на ввод Python изнутри в другом потоке

Сообщение Anonymous »

Я хочу ответить на input() из другого потока того же процесса на Python из кода.
Это код:

Код: Выделить всё

import sys
import threading

def threaded(fn):
def wrapper(*args, **kwargs):
thread = threading.Thread(target=fn, args=args, kwargs=kwargs, daemon=True)
thread.start()
return thread
return wrapper

@threaded
def answer():
time.sleep(2)
sys.stdin.write('to be inputed')

answer()
x = input('insert a value: ')
print(f'value inserted: {x}')  # excpeted print: 'value inserted: to be inputed'
Но я думаю, что это невозможно, потому что я получаю эту ошибку:

Код: Выделить всё

Exception in thread Thread-1:
Traceback (most recent call last):
File "teste.py", line 80, in answer
sys.stdin.write('to be inputed')
io.UnsupportedOperation: not writable
Трудно объяснить, почему я этого хочу, но иногда пользователь вводит значение, а иногда оно поступает из другого источника ввода (telegram). Таким образом, этот второй поток должен иметь возможность вводить значение и прекращать выполнение кода.
Я также не могу изменить часть кода input(), потому что она находится внутри библиотека, поэтому должно быть так: input('insert a value: ')
Есть ли способ добиться этого?

Подробнее здесь: https://stackoverflow.com/questions/668 ... her-thread

Вернуться в «Python»