Thanks for the replies and pointers. I got multiprocessing.Pool to work, but it eats up memory and time. I append two implementation segments below. The multiprocessing version is about 33 times _slower_ than the single processor version. Unless I use a small number of processors, memory fills up and I kill the job to make the computer usable again. The following segments of code are inside a loop that steps over 115 lines of pixels. def func(job): return job[0].random_fork(job[1]) . . . . . . #Multiprocessing version: noise = numpy.random.standard_normal((N_particles,noise_df)) jobs = zip(self.particles,noise) self.particles = self.pool.map(func, jobs, self.chunk_size) return (m,v) . . . . . . #Single processing version noise = numpy.random.standard_normal((N_particles,noise_df)) jobs = zip(self.particles,noise) self.particles = map(func, jobs) return (m,v) -- Andy Fraser ISR-2 (MS:B244) afraser@lanl.gov Los Alamos National Laboratory 505 665 9448 Los Alamos, NM 87545