I guess you only want a certain update speed for a method and not for the entire game (as your title suggests). I am no math hero, so correct me if anything is incorrect.
(1) Custom timer:
var time_passed = 0
var calls_per_sec = 30
var time_for_one_call= 1 / calls_per_second
func _process (delta):
time_passed += delta
if time_passed >= time_for_one_call:
time_passed -= time_for_one_call
delta is the time which is passed from the last frame to the current frame, it varies depending on the workload. On a game, which runs at constant 60 fps, the delta is around ~0.017 seconds (17ms). Now, when you need 30 calls pers second, then 1 call needs 1 sec / 30 calls = ~ 0.03 seconds (33ms). Therefore you ask when are 0.03s passed? If so, call my function.
(2) Another approach may be Coroutines. But I don't see a way to effectively use them in this case. There is no simple way like Unity:
yield return new WaitForSeconds();