Thanks for your example, but that's just multi-threading unfortunately. It doesn't run on multiple CPU cores.
The problem with my solution is that it uses pickling for inter-process communication and it seems like pickling doesn't work inside of a PythonCaller. So I need to find out how to get the pickle module working in FME or find another solution for multicore processing in Python (that works in FME). But I'm not a Python expert.
If you really need to do processing over multiple CPU cores, my recommendation would be to use an established framework, such as e.g. Dask, Ray or Dispy. This would also give you the possibility to do processing over multiple servers, computing clusters, etc. You most probably won't be able to pass native FMEFeature objects, so you'll want to create your own business classes and map the FMEFeature objects to these inside the PythonCaller before passing them along.
I'm curious as to what you're trying to do. I'd be surprised if there isn't a solution in native FME. Whilst it might not be as efficient as doing it purely in parallel python, it would be better than not being able to do it at all