The first Python implementation is bad - removing the first element in each iteration is O(n), the C implementation gets this right by maintaining one index into each list instead of modifying the lists.
def sort_test(): m2 = a + b; m2.sort()
instead of
def sort_test(): m2 = list(a + b); m2.sort()
EDIT: It seems like OP fixed this issue in perf.py, but left it in test.py