Проще всего вынести переменные из локальных в экземпляр класса. А потом дописать второму классу конструктор, и передавать ссылку на первый класс. Но чтобы избежать состояний гонки (когда два потока лезут в одну переменную, и хотя бы один из них - на запись), нужно спрятать переменные dej1 и dej2 под мьютекс(в терминах питона - Lock).
class search_time(Thread):
def __init__(self):
super().__init__()
self.dej = ""
self.dej2 = ""
self.dej_mutex = threading.Lock()
def run(self):
#в коде run запись в self.dej1 или self.dej2 делается строго так
if self.dej_mutex.acquire(): #если Lock уже занят вторым потоком, первый подождёт освобождения
self.dej1 = "Вася Пупкин"
self.dej2 = "Жора Золотарёв"
self.dej_mutex.release() #а теперь сами освободим Lock, чтобы второй поток мог обратиться к переменным
Во втором потоке создаёшь конструктор, и передаёшь ему ссылку на первый поток.
class runbot(Thread):
def __init__(self, st):
super().__init__()
self.st = st
def run(self):
#в коде обращение к dej1 или dej2 делается строго так
if self.st.dej_mutex.acquire(): #если Lock сейчас занят первым потоком, ждём освобождения
print(self.st.dej1, self.st.dej2) #используем переменные
self.st.dej_mutex.release() #а теперь сами освободим Lock, чтобы первый поток мог обратиться к переменным
Тогда при создании потоков сделаешь так:
w1 = search_time()
w1.start()
w2 = runbot(w1)
w2.start()