Doing read() on a big file containing many PGN games (think hundreds of megabytes and more) takes a very long time and eats up lots of memory.
Doing pgn.loads() on a big string is even worse because there's the risk of completely running out of memory.