В настоящее время я делаю программу Python, которая должна использовать многопроцессорность, где одна функция обрабатывает пользовательский интерфейс, а другая обрабатывает обновление файлов данных. Причина ошибки EOFError: EOF when reading a line
указывается в тот момент, когда моя функция пользовательского интерфейса вызывает пользовательский ввод с помощью функции input()
.
Ниже приведен упрощенный код, который может выступать в качестве примера и создает точно такую же ошибку в моей реальной программе:
import multiprocessing
import time
# Class with methods used to print strings.
class Printing:
# Setting of initial values is ignored.
def __init__(self):
pass
# Continuously calls for user input that is then printed.
def printInput(self):
while True:
string = input("Enter a string: ")
print(string)
# Continuously prints the character "X"
def printXs():
while True:
time.sleep(1) # Just used to slows the printing output.
print("X")
# Execution of script when told to run.
if __name__=='__main__':
mp1 = multiprocessing.Process(target=printXs)
mp2 = multiprocessing.Process(target=Printing().printInput)
mp1.start()
mp2.start()
В результате возникает ошибка EOFError: EOF when reading a line
в строке 14, или, другими словами, фрагмент кода input ("Enter a string: ")
.