Alright, made some quick changes to setup what was mentioned.
I attempted this on the Laser objects..
I will have to dive in a little more to determine where this is happening, but here is what I noticed.
Here is some misc. output I use for debugging that was produced when I noticed this occurring..
Generating Lasers with 992 left
timeToGen 2000 Lasers: 0.12253904342651367
Generating Lasers with 2993 left
timeToGen 1000 Lasers: 0.07495284080505371
Generating Lasers with 3995 left
timeToGen 1000 Lasers: 0.08381533622741699
Max Star execution time: 0.0003571510314941406
Max Item Collision execution time: 0.0007109642028808594
Max Laser Collision execution time: 0.0007081031799316406
Max Spawn Item execution time: 0.00047898292541503906
Max Should Fire execution time: 0.002073049545288086
Active weapon: laser
Dictionary of self.children and count of each:
<class '_scene2.SpriteNode'>: 230
<class 'scene.LabelNode'>: 5
<class 'main.MiniRocket'>: 1000
<class 'main.Laser'>: 4987
<class 'main.Meteor'>: 170
<class 'main.Star'>: 51
<class 'main.Meteor2'>: 3
I noticed that when firing lasers, I should have been firing 10 projectiles each time, but some of the projectiles were not visible. So I set a breakpoint and found that some of the lasers in my list of projectiles (contains all projectiles that have been fired and should be visible) have no parent.
Unfortunately, the functions that may be involved in this are messy and I will need to dig around and clean up before I can efficiently get to root cause.