psyco doesn’t work on MacOS-X, but otherwise that’d help with a cut in CPU time of 30-50% in histo loops. You can also program list contractions yourself, if the memory overhead is acceptable, and get psyco-like speeds. However, that will make your code less readable (IMHO, anyway).
Now for a factor of 10, the actual python code needs massaging in a way that it and PyROOT cooperate. E.g. that the loop is fixed, that return types can be ignore (presumably), that the in-parameter really is a double etc. It’s in interesting subject, but not an easy one. More in March (ROOT Workshop). In the mean time, yes, just wrap the inner loop in C++ (e.g. with ACLiC).