Clearly you would rather then solve the problem without the constraint. I've made some improvements.
You have nine clumps (sections separated by zeros)
c n w
-- --- ---
0 0 79
1 112 95
2 238 36
3 328 44
4 407 34
5 492 38
6 536 189
7 729 132
8 888 76
Initial survey of peaks:
n c Center -B(alt) Miss Width of Peak
--- - ------ ------ ---- ----
10 0 9.96 0.0210 0.02 4.87
33 0 32.38 0.0204 0.03 4.95
60 0 59.82 0.0152 0.16 5.74
131 1 130.27 0.0196 0.05 5.05
161 1 160.31 0.0163 0.14 5.54
189 1 188.16 0.0203 0.02 4.97
256 2 255.81 0.0202 0.02 4.97
355 3 354.13 0.0210 0.05 4.88
423 4 422.05 0.0203 0.07 4.97
510 5 509.91 0.0209 0.03 4.90
555 6 554.90 0.0203 0.03 4.96
576 6 575.34 0.0200 0.11 5.00
609 6 608.31 0.0127 0.25 6.27
644 6 644.67 0.0099 0.63 7.09
657 6 656.34 0.0134 0.34 6.11
680 6 679.08 0.0194 0.12 5.08
703 6 702.81 0.0101 0.07 7.05
748 7 747.02 0.0171 0.05 5.40
773 7 772.18 0.0202 0.07 4.97
800 7 799.87 0.0140 0.43 5.98
821 7 820.74 0.0119 0.03 6.47
842 7 841.34 0.0196 0.12 5.05
906 8 905.78 0.0226 0.06 4.70
933 8 932.95 0.0113 0.59 6.66
947 8 945.79 0.0156 0.28 5.67
The "Miss" column is a metric for how close the data fits a Gaussian at that point. You can see that the isolated peaks give you quite good results. I am confident from my work in teasing apart tones in a DFT that I can tease apart the Gaussians in the clumps so the readings are as good as the standalone ones.
I doubt you can compete with mine in speed. This run on a fairly old computer took .02 seconds in Python, including the time to print to the console.