They will only heat up the oil with very minimal heat going into the block.
The better solution is to have a coolant engine block heater which is inside of the engine ( there is a blank plug for one on most cars).
This heats up the block and coolant.
Second best option is an inline coolant heater which goes between the rad and engine essentially...
The best possible solution is to have a heated blanket on the battery with an onboard tender, engine oil pan heater (stick on type), engine coolant heater and transmission Heater (also a stick-on type).
I have this set up on my tractor which uses one plug in the front which charges and warms the battery, and transmission.
And another plug on the other side for the engine block heater, oil and coolant.
I'm thinking of running a third line with another outlet to put a rear dif heater on there.. maybe interior cab heater..
The way I set it up is to have the battery heated and maintained (helps the most to start the engine) on all the time (in winter time) while the other heaters are on thermostats..
If I only had one option for a heater I would use a battery heater... if the engine is started it will get hot over time...
A hot engine with a battery that can't crank it, isn't as harmful imho..