I am not sure that this is really a question which fits normal StackOverflow requirements, as this is not really a code problem but a question of preference or needs, and therefore can be subjective. The reasons I would say this is because you have to take into account many things including what your processing and whether your planning for it to be scalable.
For scability, you have to take into account how much memory is utilised, what the initialisation time is, and whether the engine would operate safely across your classes if you are attempting to use a singleton.
The other issues you'd have to cover is whether you are using the generic engine with runtime typing, or you are using the type-based engine.
Personally, for safety, I would initiate a new engine for each processing request if you are using tasks or multi-threading as long as the initialisation time is short. Otherwise, if the initialisation time is long, create a singleton with a queue but then you need to balance how big that queue can get.
Effectively, you are trying to balance it so that you are picking Init+((Process)x#)
or Init+((Queue+Process)x#)
is the shorter and safer to implement.
Not sure if that truly answers your question but hopefully it's a start.