gpt4 book ai didi

python - 简单线程会杀死内核或不按预期运行

转载 作者:行者123 更新时间:2023-12-01 01:02:03 25 4
gpt4 key购买 nike

抱歉,标题很笼统,但我真的不知道如何以其他方式提出这个问题。

我正在尝试构建一个类,该类调用内置“输入”函数,但如果用户在给定超时内未进行交互,则返回默认值。

from threading import Thread

class timeout_input:

def __init__(self, query, time, default=None):

self._input = None
self.query = query

get_input_thread = Thread(target=self._get_input, daemon=True)

get_input_thread.start()
get_input_thread.join(timeout=time)

if get_input_thread.is_alive():
self.result = default
else:
self.result = self._input


def _get_input(self):
self._input = input(self.query)
return

print(timeout_input("Input: ",3, 'default').result)

问题是,当我运行下面的代码并输入一个输入(例如“1”)时,有时该函数打印“1”,其他时候打印“默认”(它不应该),有时会杀死内核,以便我在 Spyder 控制台中收到“内核死亡,重述”警告。

这与线程模块有关吗?

下面是一个例子。在此测试期间,我没有更改 timeout_input.py 中的任何内容 Example

如您所见,输入 [2] 和 [3] 的行为符合预期。如果给出输入并且内核立即死亡,输入[4]也会返回“默认”。

然后,重新启动后,In[1] 的行为符合预期。

最佳答案

Original Answer

当您的计算机创建内核速度很慢时(因为它缺乏足够的 RAM 或 CPU 使用率很高,正如 @mrclary 之前所说),就会发生这种情况。要解决该问题,请增加检查内核是否启动的时间。 (例如 6 秒)

我怀疑这一点是因为代码按照您在我的机器上指定的方式正确运行

关于python - 简单线程会杀死内核或不按预期运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55712960/

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