If you run multiple replicates, simuPOP allows you to take full advantage of a multicore computer because it can be configured to run multithreaded (check the documentation). In this case, the more you depend on simuPOP native operators, the better. Python-coded operators will be single-threaded because of Python Global Interpreter Lock (GIL). If you want to know more about the GIL refer to http://www.dabeaz.com/python/UnderstandingGIL.pdf.
While performing multiple replicates of complex models, I prefer to use a different strategy: I perform a single replicate per process, but run multiple processes. This has the advantage of scaling on a cluster, whereas simuPOP multithreaded code can only be used on a single computer. For ...