If the instrument is busy carrying out the sweep, then the VISA write of the "*OPC?" command is not processed until the sweep completes. This is why the VISA read will timeout.
An alternate approach is to use VISA's ReadSTB() to obtain the value of the status byte or status.condition register.
I put an elaboration and Python sample in the attached document.