Или если идти таким путем, какой выбрали вы, то в функции делать copy экземпляра, чтобы это были разные объекты. Но лучше конечно передать класс, а инстансы уже создавать в функции.
А еще бы я заменил i на _, дабы показать, что это просто повторение действия size раз.
Как ты мог заметить совершенно не понятно, что ты хочешь сделать. "Прочитать класс", что это такое?
Ладно, тогда так. Как в django в models.py осуществляется "чтение классов" ? Что происходит когда ты "читаешь" классы? И как именно ты их "читаешь"? Везде пишу "читаешь" в кавычках т.к. никто не использует такой термин, люди не понимают тебя.
используйте global, а не передавайте переменную в функцию
import threading
import time
a = 'a'
def thread_func():
global a
w = 0
while w < 5:
time.sleep(2)
print("func:" + a)
w += 1
x = threading.Thread(target=thread_func)
x.start()
a = input('Введите новое значение')