Правильно ли использовать атрибуты в методах канала?Python

Программы на Python
Anonymous
Правильно ли использовать атрибуты в методах канала?

Сообщение Anonymous »


В следующем разделе кода у нас есть исходный процесс, который передает информацию, считывая элементы из кортежа и записывая соответствующие элементы один за другим в анонимный канал. Второй процесс играет роль процесса-преобразователя, т.е. читает то, что исходный процесс записывает в анонимный канал, токенизирует (различает слова на основе пробелов) сообщения и записывает результат в FIFO (он же именованный канал). Я хотел спросить , правильно ли, что в процессе преобразования я указал атрибут получения_сообщений, или процесс преобразования не должен иметь атрибутов?

Я попробовал этот код:

def source_process(): полученные_сообщения = [] p = os.pipe() #p[0] — читатель, а p[1] — записыватель в возвращаемом кортеже os.pipe() если нет, п: печать («вызов по трубке!») os.close(p[0]) os.close(p[1]) os._exit(1) pid = os.fork() если идентификатор == -1: print (os.strerror("вызов вилки")) ОС.закрыть(п) os._exit(1) elif pid == 0: #дочерний процесс os.close (p[0]) # дочерний элемент не читает, потому что здесь мы закрываем p[0] os.write (p[1], MESSAGES[0].encode()) # кодирование для преобразования строк в байты os.write (p[1], СООБЩЕНИЯ[1].encode()) os.write (p[1], СООБЩЕНИЯ[2].encode()) os.write (p[1], СООБЩЕНИЯ[3].encode()) os.close(p[1]) else: # если код достигает этой строки, pid!=0 и, таким образом, мы находимся в родительском процессе os.close(p[1]) # родитель не пишет, потому что здесь мы закрываем p[1] для сообщения в СООБЩЕНИЯХ: read_message = os.read(p[0], len(сообщение)); получены_сообщения.append(read_message.decode()) ОС.wait() os.close(p[0]) вернуть полученные_сообщения защита Transformer_process (полученные_сообщения): messages_splited=[] для полученного_сообщения в полученном_сообщении: слово = полученное_сообщение.strip().split() messages_splited.append (слово) пытаться: #Открываем именованный канал для записи с open(fifoname, 'w') в качестве канала: для message_splited в messages_splited: # Записываем каждое токенизированное слово отдельно в именованный канал для слова в message_splited: Pipeout.write(слово + '\n') кроме исключения как e: print(f"Ошибка в дочернем процессе: {e}") окончательно: os._exit(0) вернуть сообщения_splited Я не прошу решения, просто скажите мне, правильно ли оно или мне следует его изменить

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