Просто предоставьте другую идею
df.cumsum()[~df.Col1].nunique()
Out[408]:
Col1 3
dtype: int64
Возможно, необходимо использовать что-то еще для пробуждения выбора. Возможно, канал или что-то как этот.
UDP является протоколом без установления соединения. С тех пор нет никакого соединения, ни один не может быть поврежден, таким образом, потребитель не знает, что производитель никогда не будет отправлять снова.
Вы могли заставить производителя отправить "конец потока" сообщение и сделать, чтобы потребитель завершился после получения его.
Я думаю, что самое очевидное решение - то, чтобы это, было закрытым не считают исключительным условием. Я думаю, что корень проблемы, из которого Вы действительно не охватываете философию select
. С какой стати Вы возящийся с сокетом в другом потоке, который походит на залог провала.
Я сказал бы, что различие - то, что recvfrom активно пытается прочитать сообщение из единственного сокета, где выбор ожидает сообщения, чтобы прибыть, возможно на нескольких дескрипторах, и не обязательно снабдить дескрипторы сокетом.
Не могли бы вы послать потоку сигнал (например, USR2), который заставил бы select () вернуться с EINTR? Затем в обработчике сигналов установите флаг, запрещающий перезапускать select ()?
. Это устранит необходимость в ожидании нескольких файловых дескрипторов и кажется намного чище, чем использование канала для его уничтожения.