¿Cómo mapear o anidar generadores de funciones Python 2.7?

Si tengo un generador de funciones muy simple (aunque posiblemente muy complejo) en Python 2.7, así:

def accumulator():
    x = yield 0
    while True:
        x += yield x

Que se puede usar, así:

>>> a = accumulator()
>>> a.send(None)
0
>>> a.send(1)
1
>>> a.send(2)
3
>>> a.send(3)
6

¿Cuál sería un contenedor simple para otro generador de funciones que produzca el mismo resultado, excepto que se multiplique por 2? El generador de funciones anterior es simple, pero suponga que es demasiado complicado copiar y pegar. Estoy intentando algo como:

def doubler():
    a = accumulator()
    a.send(None)
    y = yield 0
    while True:
        y = 2 * a.send(yield y)

O, imaginando algo más simple:

def doubler():
    a = accumulator()
    a.send = lambda v: 2 * super(self).send(v)
    return a

Ambos están horriblemente rotos, por lo que no compartiré los errores de sintaxis, pero puede ilustrar lo que estoy tratando de hacer.

Idealmente, me gustaría obtener algo, como:

>>> d = doubler()
>>> d.send(None)
0
>>> d.send(1)
2
>>> d.send(2)
6
>>> d.send(3)
12

Los resultados son exactamente los mismos que el original, excepto que se duplicaron.

Estoy tratando de evitar duplicar un generador de funciones muy complicado para crear un resultado idéntico, excepto escalado por un factor conocido.

El segundo generador finalmente tendrá un flujo de entrada diferente, por lo que no puedo usar el resultado del primer generador y duplicarlo. Necesito un segundo generador independiente, envolviendo el primero.

El flujo de entrada es indeterminado, de modo que es imposible generar toda la secuencia y luego transformarla.

Parece que quiero asignar o anidar estos generadores de funciones, pero no estoy seguro de la jerga adecuada, por lo que no estoy llegando a ningún lado en Google.