Hi,
The reason your code is running very slow is that you are creating many temporary vectors to store X[i]*POD_funcs[i].vector() and then to store the sum.
Depending on how large is N, this solution may be better:
for i in range(N):
solHold.vector().axpy(X[i], POD_funcs[i].vector())
note: u.axpy(alpha, v) computes u = u + alpha v without creating temporary vectors.
If this is still slow, you will most likely have to implement the loop using the C++ interface of FEniCS.