If i test so do engine work as long the text given to it are,
if look at processes used so are there two these get shut down/cleaned when no more text.
Tell more what you have problem with.
Here code i did test with in a virtual environment.
import pyttsx3
engine = pyttsx3.init()
engine.say("I will speak this text" * 10)
print(engine.isBusy())
engine.runAndWait()
#--------------
import pyttsx3
import time
engine = pyttsx3.init()
words = ["here","are","some","test","words"]
engine.startLoop(False)
for w in words:
time.sleep(1)
engine.say(w)
engine.iterate()
print(w)
while engine.isBusy(): # wait until finished talking
time.sleep(.1)
engine.endLoop()