Мне пришла в голову идея использовать дескриптор файла канала, который родительский объект мог бы написать, а затем прочитать / сбросить в сочетании с select, но на самом деле это не очень элегантный дизайн.
Более подробно: родительский объект создаст канал, подпроцессы унаследуют его, родительский процесс запишет в канал, тем самым пробуждая любой подпроцесс select()
: ing в дескрипторе файла, но родительский элемент затем немедленно считал бы с конца чтения канала и опустошил его - единственный эффект состоял в том, что те дочерние процессы, которые были select()
: входящими в канал, проснулись.
Как я уже сказал, это кажется странным и безобразным, но я пока не нашел ничего лучшего.
Edit:
Оказывается, это не работает - некоторые дочерние процессы проснулись, а некоторые нет. Я прибег к использованию Condition
из модуля multiprocessing
.