Здравствуйте, у меня возникла проблема с потоками Python.Динамическая Threading
То, что я намереваюсь сделать, это создать функцию, которая запускает другие функции в виде потока при вызове. К сожалению, я сталкиваюсь с двумя проблемами (кроме того, что у меня недостаточно знаний в Python.)
1: Если я помещаю кавычки вокруг: "globals()[T_Name[i]]()"
, он обрабатывает его как строку и обычно выполняет код. 2: Если я опускаю кавычки около globals()[T_Name[i]]()
, он немедленно запускает первую функцию и не обрабатывает оставшуюся часть скрипта, чтобы запустить ее как поток.
Если кто-нибудь может дать некоторую проницательность, я приношу свои извинения за форматирование, я в конце концов буду подбрасывать его до стандартов PEP 8.
Код:
import threading
import time
T_Name=("Write_Done", "Write_Pin")
T_Time=[]
Tr=[]
for i, Nu in enumerate(T_Name):
Tr.append("T" + str(i))
T_Time.append("0")
def Write_Done():
while True:
print("Done")
time.sleep(5)
def Write_Pin():
while True:
print("Pin")
time.sleep(15)
def Thread_Checker():
while True:
time.sleep(5)
for i, TH in enumerate(T_Time):
if (time.time() - int(TH)) < 30:
pass
#thread is still rocking
else:
#thread has failed Time to get her done.
Tr[i] = threading.Thread(target=("globals()[T_Name[i]]()"))
print("starting" + T_Name[i])
Tr[i].daemon = True
Tr[i].start()
print("Test if alive")
if Tr[0].is_alive():
print("I LIVE!")
else:
print("I ded")
Thread_Checker()
Внедрение силы Лямбда –
Реализация Лямбда теперь дает мне недействительную ключевую ошибку. Как раньше я не мог вызвать функцию. –
Но это, по крайней мере, происходит в новой теме? Проверьте, что он теперь в потоке, и если да, то теперь вы переходите к следующей проблеме с вашим кодом, что бы это ни было. У вас есть ответ о том, как он должен быть в ните, по крайней мере. –