Для вызова функции повторно в отдельном потоке в Python можно использовать модуль threading. Например, если функция называется my_function, то можно создать новый поток следующим образом:
```python
import threading
def my_function():
# Ваш код
thread = threading.Thread(target=my_function)
thread.start()
```
Если вы хотите запустить функцию без блокировки основного приложения при выполнении в бесконечном цикле без использования многопоточности, можно воспользоваться модулем multiprocessing:
```python
import multiprocessing
def my_function():
while True:
# Ваш код
if __name__ == '__main__':
process = multiprocessing.Process(target=my_function)
process.start()
```
Чтобы избежать ошибки "RuntimeError: threads can only be started once" при попытке повторного запуска функции с потоком, необходимо создавать новый объект потока каждый раз перед вызовом функции.
Если вы хотите запустить функцию без привязки к созданию отдельной функции start() и кнопке в Tkinter, можно использовать следующий метод:
```python
import threading
def my_function():
while True:
# Ваш код
def run_my_function():
thread = threading.Thread(target=my_function)
thread.start()
run_my_function()
```
Этот способ позволит вам вызывать функцию my_function в отдельном потоке, не привязывая ее к событиям Tkinter или другим интерфейсным элементам. Вы можете вызывать функцию run_my_function() в любом месте вашего кода, чтобы запустить функцию my_function в отдельном потоке.