OK perhaps some ways you could improve efficiency here - although it might still be lagging because it is alot to draw on every frame.
nGratings = 200
positions = []#populate this with your list of positions or provide a range of values to work through
gratingList = []
for i, position in enumerate(positions):
thisGrating = visual.GratingStim(win=mywin, mask = "gauss", size = 1, pos = position, sf = 1.5)
gratingList.append(thisGrating)
#when it comes to drawing
for grating in gratingList:
grating.draw()
Alternatively you might want to consider checking out elementArrayStim this post might also be helpful? ElementArrayStim - updating and passing lists of parameters / stimuli? becca