gpt4 book ai didi

python - 动态线程

转载 作者:太空宇宙 更新时间:2023-11-03 16:02:44 25 4
gpt4 key购买 nike

您好,我遇到了 Python 线程问题。

我的目标是创建一个函数,在调用时将其他函数作为线程启动。不幸的是,我遇到了两个问题(除了我缺乏 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()

最佳答案

使用 lambda 函数创建实际上可作为目标调用的内容,但会推迟对所需内容的调用,直到调用目标为止。

Tr[i] = threading.Thread(target=lambda: globals()[T_Name[i]]())

关于python - 动态线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40167050/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com