Используя каналы для взаимодействия процессов с многопроцессорной библиотекой, я заметил странное поведение функции опроса. Если я закрою другой конец трубы, poll() вернет true, что довольно странно. Документы Python на самом деле не говорят, чего ожидать. Тем не менее я думал, что poll() по крайней мере вернет false, если в канале определенно ничего нет, а другой конец даже закрыт. Я использую python3.3.2, но, похоже, то же самое касается Python 2.7.5. Это задумано или это ошибка, и если это не ошибка, для чего она нужна?
import multiprocessing
if __name__ == '__main__':
con = multiprocessing.Pipe(True)
con1, con2 = con
print(str(con1.poll())) #prints False
con2.close()
con1.close()
con = multiprocessing.Pipe(True)
con1, con2 = con
con2.close()
print(str(con1.poll())) #prints True
con1.close()
Подробнее здесь: https://stackoverflow.com/questions/194 ... e-poll-bug