res_form = k * df.inner(df.grad(u), df.grad(v)) * df.dx - f_load * v * df.dx
dres_du = df.derivative(res_form, u)
for i in range(some_large_number):
u.vector().set_local(np.random.rand(V.dim()))
res = df.assemble(res_form)
dres__du = np.asarray(df.assemble(dres_du))
A second thing that could speed up your code is to move to DOLFINx, as there the compiled form can be stored outside of the loop, saving you some time looking up cached code.