EOFError, используя input () с threading.Thread (), работающим Python на ноутбуке Jupyter - PullRequest
0 голосов
/ 13 января 2020

Я выполняю следующий фрагмент кода в блокноте Jupyter, но продолжаю получать сообщение об ошибке «EOFError: EOF при чтении строки», когда я вводю что-либо кроме «q» для функции terminate ().

from threading import Thread, Lock
import time

class CountdownTask: 

    def __init__(self):
        self.print_lock = Lock()
        self._running = True

    def terminate(self): 
        q = ''
        while q != 'q':
            q = input('quit? ')
        self._running = False

    def run(self, n): 
        while self._running and n > 0: 
            print('T-minus', n) 
            n -= 1
            time.sleep(1) 

c = CountdownTask() 
t = Thread(target = c.run, args =(10, )) 
close = Thread(target = c.terminate)
t.daemon = True
t.start() 
close.start()

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

import threading
import time

def run_thread():
    while True:
        print('thread running')
        time.sleep(2)
        global stop_threads
        if stop_threads:
            break

stop_threads = False
t1 = threading.Thread(target=run_thread)
t1.start()
time.sleep(0.5)

q = ''
while q != 'q':
    q = input()

stop_threads = True
t1.join()
print('finish')

Я не понимаю Ошибка запуска кода в командной строке, но мне нужно разработать его в Jupyter. Кто-нибудь знает, как заставить его работать?

...