正如我在标题中所说,我想创建string variables使用. 并使用删除它们。Threadsinputflag我需要一步步解释这个问题。比方说,我input从用户那里得到。这input由用户将是 的名称Thread variable。让input等于love和like。在这种情况下,将创建 2 个线程变量和线程。他们的名字将是loveand like。要创建一个Thread,必须给出这样的代码。代码:from threading import Threadimport timeimport re# Using while loop. Because I want to create multiple Threads by doing this.# Dictsdicts = {}flags = {}while True: # Input threadName = input('Thread name please? ') # To delete a Thread if 'delete' in threadName: delThread = re.search(r'delete (.*)', threadName) if delThread: delThread = list(map(str, delThread.groups())) delThread = ''.join(delThread) print('DELETING:', delThread) flags[delThread] = True print('DICT NOW:', flags) else: # Target function for every Thread. Print a message every 3 secs. def targetfunc(tname): while True: if flags[tname] in flags and flags[tname] == True: break print(f"I'm {tname} Thread.") time.sleep(3) # Create Threads. 'dicts[threadName]' will be whatever the user enters input. # Should be string variable. # 'threadName' is equal to input too. dicts[threadName] = Thread(target = targetfunc, args = [threadName]) dicts[threadName].start() flags[threadName] = False print(dicts) print(flags)我正在使用 2 个字典。一个dicts用于创建Threads,另一个用于使用删除它们flag。要创建,只需键入您要调用的线程即可。要删除,请键入delete (thread name)。KeyError当我尝试删除时,此代码会为每个线程抛出。这是完整的错误。这就是程序。如何解决这个问题?我想要实现的是:当我键入名称时,该名称必须创建一个Thread具有该名称的新名称。但是当我输入时delete (thread name)应该停止(thread name) Thread。我希望我能解释清楚。希望你帮忙。
1 回答
繁星coding
TA贡献1797条经验 获得超4个赞
问题是您正在检查字典条目而不是检查该键是否存在。
更改此行:
if flags[tname] in flags and flags[tname] == True:
对此:
if tname in flags and flags[tname] == True:
通过此更改,代码可以正确运行。
添加回答
举报
0/150
提交
取消