I have a Python script that reads a line of data from a source file, performs a set of calculations on that data and writes the results of those calculations to the output file.  The script is currently coded to read one line at a time from the source file until the end of the source file is reached.
Can I improve the execution time of the script by reading multiple lines from the source file, performing the calculations and writing the results to the output file?
Do I take a performance hit by having large numbers of read / write instances?
I ask the question rather than perform a test due to the difficulty of changing the code.
Such a question can be answered only by real measurement.
You shall create simple test scenario, which will do reading and writing files of similar type and size without the actual calculation.
You can do profiling and check, how much time you spend on I/O operations and how much on processing the content. It might turn out, that even with I/O running at speed of light you will not improve the performance remarkably.
Without measuring the time one can only guess and my estimation is:

if you use default buffering, you will not see big differences.
in case, reading more lines at once would speed up the processing, you could play with setting up larger buffer for file operations. This could speed up the process even with processing line by line keeping your processing code simple.

Personally, I would prefer to preserve current simple line by line processing, unless performance and gains would be really significant.
Performance Tradeoff Reading From One File, Perfoming An Action and Writing To Another File