A popular software development pattern seems to be:

Thrash out the logic and algorithms in Python.
Profile to find out where the slow bits are.
Replace those with C.
Ship code that is the best trade-off between high-level and speedy.

I say popular simply because I've seen people talk about it as being a great idea.
But are there any large projects that have actually used this method? Preferably Free software projects so I can have a look and see how they did it - and maybe learn some best practices.
Step 3 is wrong.  In the modern world, more than half the time "the slow bits" are I/O or network bound, or limited by some other resource outside the process.  Rewriting them in anything is only going to introduce bugs.
Best practice for the Python-then-profile-then-C design pattern?