Python raw_input останавливается и завершается неудачей при проверке ошибок при запуске двух потоков - PullRequest
0 голосов
/ 04 ноября 2019

Я работаю с сетевым скриптом, чтобы иметь два потока, которые проверяют отправку и получение данных от клиента. Внутри основного кода есть цикл, который ожидает ввода пользователя и ставит в очередь результат для отправки.

Я изменил его так, чтобы вместо получения только одного raw_input (который работает) я добавил три новых вызова raw_inputкоторые ждут внутри бесконечных циклов while, чтобы проверить правильность ввода. Как только это соединено, сообщение помещается в очередь в потоке отправки. Иногда сообщения будут отправляться, но в других случаях при правильном вводе они будут останавливаться, а затем выбрасывать ложный минус.

Вот как я отправляю внутри SendThread:

def run(self):
     self.current_thread = threading.currentThread()
     while True:
         messages = self.state.get_message()
         sendmessage()

Это то, что яраньше и работал:

#Here i start the send and listen threads with .start()
def main():
    while true:
        message = raw_input("Put in input")
        state.queue_new_message(message) #basically puts the message into a state object initialized with message_q = []

Но затем я добавил функцию с именем x (), которая является единственной функцией цикла while в main () (код выше):

def x(): 
    pickName()
    pickCar()
    pickModel()
    #set globals and use them below
    message = a + "" + b + "" + "" + c
    state.queue_new_message(message) 

с pickName () это тот же формат, что и pickCar и pickModel

def pickName()
    while true:
        name = raw_input("Name")
        if name not something:
            print error
        else:
            break
        global name2  
        a = name

Теперь, когда я запускаю код, иногда он будет работать, а иногда, когда я буду вводить действительный ввод, он будет зависатьпока я не нажму клавишу ввода, а затем распечатать сообщение об ошибке. Я в недоумении, почему это происходит прямо сейчас. Когда я подключаюсь к своему клиенту, это единственный раз, когда это происходит, когда я работаю без каких-либо сетевых подключений (потоков), тогда ввод и вывод raw_inputs работают гладко и, как и ожидалось. Я хотел бы 100% производительности в этом, и сейчас всегда есть шанс, что он не будет работать, пока вы не введете одно и то же значение несколько раз. Любая помощь будет оценена. Thx!

...