I understand this is very late to answer this question, as it has been asked in february, but it is worth answering at this type of work keep coming.:
we can break a big segy file into small files. before reaading it :
1. Read only headers.
2. select a heder on basis of which we can divide data into parts.
3. create masks as many as we want to make parts of data.
4. read data of each chunk using corresponding mask.
for example.
we have a huge 3 data , which can be divided into inline swath
then create masks according to inline swaths. and reads data belonging to those swaths only. I am using this as a routine