How to stop Blender from making the CPU overheat? Apparently my CPU or GPU overheats when Blender renders more than a few minutes.  The computer suddenly powers down, taking down all running apps, email I'm writing, etc.  This is almost never a problem with still scenes, which finish soon enough, but often with animation renders.  

The problem occurs with either Cycles or BI renders.  I'm running on a custom-built quad core 64-bit linux desktop system.  (I'm not the one who built it. I am  a knuckle-dragging caveman with hardware issues.) (Yes, all the fans are blowing and dust has been cleaned off.)

So far the only way to prevent this for now is to choose in camera properties: Performance, Threads, Fixed, 1.   

Someday, I'll get better hardware, but in the meantime, I suspect Blender could run indefinitely, even with multiple threads, if I could make it pause for perhaps one minute between each frame when animating, just to cool down. How to make this happen?  At least, a way to run an arbitrary Python script between frames, or once per minute during any rendering. Such a script could contain a sleep stat

Even better, if Blender could throttle its rendering effort based on readings of the CPU temperature sensor.   Is that possible?

UPDATE: I've nearly forgotten about this issue, since writing a quick Python script to watch the CPU temperature, sending SIGSTOP and SIGCONT as gandalf3 describes. Zero crashes ever since. I reboot my machine once or twice per year for kernel upgrades, otherwise it's 100% up.

ANOTHER UPDATE: I took the machine apart, popped off the CPU heatsink, and applied fresh thermal paste.  Ever since, the CPU temperature has been running something like 30deg (C) cooler all the time.  Zero shutdowns, and I don't use the Python script any more unless I'm feeling paranoid.
Edit, The original question was "How to pause between rendering frames", if my answer seems out of place.

Yes, to sleep in-between rendering frames you can use a Python script to add a render_post handler, it will sleep in-between rendering frames of an animation.

import time
def sleep(scene, seconds=2.0):
    print("Sleep start")
    time.sleep(seconds)
    print("Sleep stop")

import bpy
bpy.app.handlers.render_post.append(sleep)


If you want this to always be enabled, copy it into render_sleep.py and put it in blenders scripts/startup/ path.



Note: I have serious doubts about this as being a GOOD solution to the problem you describe, a frame that takes a long time to render could overheat your system - so relying on sleeping between frames seems very precarious, on Linux there are tools to throttle process CPU use, check on nice and cpulimit (if under-clocking or better cooling isnt an option).