Way to spawn static particles with python

Hello,
What I am trying to achieve is to spawn particles on an object and then have them there rest statically.
Right now I am using particle system for this but if there is a alternative/better method with the similar performance please let me know about it. Hair type particle system is not working for some reason.

So the problem comes when I do this by appending this function in my script:

        def particleSetter(scene, degp):
            particle_object = bpy.data.objects.get(MainObject.name)
            scene = bpy.context.scene
            particles.foreach_set("size", sizes)
            particles.foreach_set("location", locations)

        bpy.app.handlers.frame_change_post.clear()
        bpy.app.handlers.frame_change_post.append(particleSetter)

bpy.app.handlers.frame_change_pre.append(particleSetter)

But with this function you can’t run it on multiple objects with different particle positions and sizes.

Is there any better way to spawn instanced objects (with custom scale and rotation) as fast as particles or does one know how to come around with the particles on multiple objects.
I hope I explained my problem well enough for one to understand it at least.

Making particle system’s instances real would be an option if it was faster because right now it takes ages (if the blender doesn’t crash which is quite common)

The problem also comes when I clear the cache with this line:

bpy.app.handlers.frame_change_post.clear() <— This line then clears particles of other objects, which makes it unusable on multiple objects and without this line the script starts giving errors since the function is unable to set the particles for 2 objects at once.

(Maybe there is a better approach to all of this that I am unfamiliar of?)
My main reason for using particles is their speed but I would happily use any other method that is easier to implement and use and has the same performance.
Thanks in advance for any help.