Running python functions timed

So im using a python library for using a lidar-sensor

Im trying to get it somehow to start the initialisation of the lib-stuff at the beginning and than at an fixed intervall read the values from and start again.

I dont fully understand how this run command works, manual says, its used to run a whole text dat, but i saw also running a string as a first argument.
my Code gives me an “name ‘initSensor’ is not defined” exception.
its a bit strange, i think it works 1-2 times, to run that function from itself and after that it throws that error…

What am i doing wrong? or some general tipps how to approach this?

thx

import PyLidar3
import time

import threading

def initSensor():
    port = "COM7"
    Obj = PyLidar3.YdLidarX4(port)
    isConnected = Obj.Connect()

    if(isConnected):
        gen = Obj.StartScanning()
        return gen
    else:
        print("connection failed, try to reconnect Sensor")
        #start_time = threading.Timer(1, initSensor())
        #start_time.start()
        init_print = "initSensor()"
        run(init_print,delayFrames=60)
        #return null

def getData(gen):
        if op("scanningSwitch")["chan1"] == 1:
            print("getting data")
            data = next(gen)
            for key in data:
                op("data")[int(key),0]=data[key]

            run("getData(gen)", delayFrames=60)
        #else:
            #return


gen = initSensor()
getData(gen)

I solved it with passing an additional argument “fromOP = me” to the run function