Your program may slow down by trying to allocate enough memory for 1.2M lines. In other words, the speed problem may not be due to parsing / manipulation, but to l.extend. To test this hypothesis, you can put a print statement in a loop:
for v in item.values():
print('got here')
l.extend(get_fields(v.split(',')))
If print instructions get slower and slower, you can probably conclude what l.extendis the culprit. In this case, you can see a significant improvement in speed if you can move the processing of each line into a loop.
PS: You should probably use the module csvto take care of the parsing for you in a higher level way, but I don’t think it will affect the speed very much.