First of...
I most likely don't like anyone uploading that many items into one list. Make sure you have your list indices set correctly before you start this.
You can most likely achieve some improvement if you try to batch several item creations into single calls. Do this by only calling the ExecuteQuery method after a few items (200 for example) have been inserted.
I ran a small test with CSOM against my demo SPO.
I was able to create ~300 items per patch.
The duration for each batch was between 22 and 31 seconds (List currently has about 11K items and times are still stable)
With 150000 rows this would still be 15000 seconds or slightly over 4 hours.
When I tried to create 1000 at once I got a timeout error since I didn't increase the request timeout.