Fair enough, and thank you for the explanation.
Alas, I’m hitting trouble again.
I’ve thus far managed to create a simple particle system along the lines of your sample, and ma reasonably happy with the results thus far.
However, I just tried to implement a lightning bolt using the same basis, and am experiencing a crash. Specifically, there seems to be no error reported in SPE’s console, and I get a Windows message indicating that Python has crashed.
A little experimenting has indicated that the crash appears to occur on the second call to linkSegment.
What might be the problem, do you think? 
My code follows (with some comments and formatting added; please forgive any formatting issues):
#Generating a "lightning bolt":
endPt = Vec3(self.firingQueue.getEntry(0).getSurfacePoint(render))
startPt = self.rayPath.getPos(render)
shotPoints = []
diff = endPt - startPt
numPoints = diff.lengthSquared()/5.0
if numPoints > 2:
diff.normalize()
diff *= 5.0
for j in range(int(numPoints)):
shotPoints.append(Vec3(startPt))
startPt += diff
shotPoints.append(Vec3(startPt))
# Elements (I think):
# [0] = list of points
# [1] = frame
# [2] = thickness
# [3] = colour
# [4] = lifetime
shots.append((shotPoints, 3, 0.4, Vec4(1, 1, 1, 1), 0.8))
# Later...
return shots
#~~~~~~~~~~~~~~~~~
#In my update method:
newLightning = []
for lightning in self.lightning:
# A new individual is created since tuples
# apparently don't support element assignment...
# Elements (I think):
# [0] = list of points
# [1] = frame
# [2] = thickness
# [3] = colour
# [4] = lifetime
newIndividualLightning = (lightning[0], lightning[1], lightning[2], lightning[3], lightning[4]-dt)
if newIndividualLightning[4] > 0.0:
# for each point, create a new linked segment
for point in newIndividualLightning[0]:
self.generator.linkSegment(point+
Vec3(random.random()-0.5, random.random()-0.5, random.random()-0.5)*2.0,
newIndividualLightning[1],
newIndividualLightning[2], newIndividualLightning[3])
self.generator.linkSegmentEnd(newIndividualLightning[1], newIndividualLightning[3])
newLightning.append(newIndividualLightning)
self.lightning = newLightning