alexholly, well, if your running it that long, you could time how long it runs and with that info, you could either have it start a timer, (or just use a counter as I would do,) to give it the time you need befroe freeing.
edit: for example, say your particles traveled for .5 seconds:
var lifetime = .5
var time = 0
var start = false
func _process(delta):
if not is__emitting():
start = true
if start:
time += delta
if time >= lifetime:
queue_free()
give or take - done off the top of my head.
Also had to give "is_emitting" an extra "_" because it wanted to italicize for some reason.