stop render from console? What I'm doing:
Running a script from the Scripting workspace in Blender UI.

What the script does:
There is a main 'for loop' that append objects one by one from another .blend file and render them individually.

What's my issue:
Sometimes I want to stop a script before it end because I'm not happy with the renders. When a script is running you can't access Blender UI (it's basically frozen), therefore I have two options to stop it. Shutting down Blender or doing CTRL+C in the System Console. Shutting down Blender is annoying, and CTRL+C doesn't work when Blender is currently rendering (&lt;- this is important!).

What I want to be able to do:
I want to find a way to stop Blender from rendering in order to access Blender UI faster and make my adjustments before starting the script again.

Typical code line that handle my renders:

bpy.ops.render.render()


I'm not going to post any more code than that, the rest is irrelevant. If you are after the bounty just create a basic scene and render it from a script with the line above and see for yourself how the UI freeze and you can't do anything to stop the render.
To my knowledge there isn't really a good way to do this from a single Blender process. But I will give a few suggestions how it can be done.

Option 1: Render in a subprocess

This can be done using render farm or net rendering software. The idea is that your master will then create the scene that needs to be rendered, save the scene to disk and use python to start a sub process to do the actual rendering.

Option 2: Construct the scene in a subprocess

A variant of the previous version where the master will create a python script with how to construct the scene and perform the rendering. You can then start blender as a subprocess to the the scene constructing + actual rendering. The subprocess can be stopped by python script.

Option 3: Sample Batch Rendering

With sample batch rendering you will render a number of samples. (15 for example) and after 15 samples when you want to continue you offset the seed and render the next 15 samples. and do that until all the samples have been rendered. During the rendering you can combine the renders using the compositor, python script or external image tool. You could also do that from a master blender process.

The open movie spring was rendered this way so at an early stage of rendering you could check if all textures could be found.