does multiprocess not work? Something like
from multiprocessing import Pool
def do_power(n):
new_observed_X = gen_observed(n)
with pm.Model() as mod:
p = pm.Beta('p', alpha=2, beta=2)
y_obs = pm.Binomial('y_obs', p=p, n=n, observed=new_observed_X)
tr = pm.sample(chains=4,cores=1)
return tr
pool = Pool(6) # or whatever
trace_list = pool.map(do_power, [10, 100, 1000, 10000])