Итак, я пытался поиграть в abit с помощью циклов for и threading.Моя идея состояла в том, чтобы иметь файл names.txt, в который я могу добавлять имена во время работы программы.Если в текстовом файле найдено новое имя.Он должен добавить его в качестве нового потока и запустить скрипт.
Я написал здесь скрипт, который выглядит следующим образом:
def testscript(thread):
print(thread)
def script():
old_list = []
old_names_list = []
while True:
new_names_list = [line.rstrip('\n') for line in open('names.txt')]
for new_thread in get_random_names(): #A function that contians 100 random names
if not new_names_list == old_names_list:
for i in new_names_list:
if not i in old_names_list:
print(i)
old_names_list = new_names_list
if new_thread not in old_list: #If the names are not added in old_list. start new thread.
threading.Thread(target=testscript, args=(new_thread,)).start()
old_list.append(new_thread)
else:
randomtime = random.randint(1, 3)
time.sleep(randomtime)
Моя проблема сейчас заключается в том, что мне удалось выяснить, когда вы добавляете имя, оно будет печатать это имя, используя этокод:
if not new_names_list == old_names_list:
for i in new_names_list:
if not i in old_names_list:
print(i)
old_names_list = new_names_list
Проблема в том, что мне также нужно использовать этот код ниже, потому что я хочу также распечатать все имена.
if new_thread not in old_list:
threading.Thread(target=testscript, args=(new_thread,)).start()
old_list.append(new_thread)
Моя идея состояла в том, чтобы сначала распечататьвсе имена и, если новое имя добавлено, он должен добавить новый поток для него и держать имя в аргументах, подобных threading.Thread(target=testscript, args=(new_thread, i)).start()
#i внутри аргументов.
Мой вопрос: как я могу бытьв состоянии отправить поток для всех новых элементов, которые добавляются в old_list и поток, который отправляет только имена внутри names.txt?