gpt4 book ai didi

python - 出于平台遗留原因, sleep 而不是 thread.join()

转载 作者:行者123 更新时间:2023-11-28 19:19:30 24 4
gpt4 key购买 nike

在某人代码的 git 分支上工作时,我遇到了以下情况,在那里暂停主线程,直到所有子线程都完成:

while(True):
if not any([thread.isAlive() for thread in self.threads]):
break
else:
time.sleep(1)

在我看来,这似乎是在浪费处理器时间;等待 .join() 子线程会更简单,处理器占用更少。

这里我要注意,所有子线程在创建时都被设置为“守护进程”。

我用自己的代码替换了这段代码:

# Luckily, threading.join() works just fine.
for thread in self.threads:
thread.join()

当我发出拉取请求时,我被告知“不会合并提交 XYZ,由于平台遗留原因, sleep 在那里。”

什么样的遗留原因可能导致需要这种冗长的内容?他没有提示我在其他任何地方使用 .join() ,只是为了那个任务。

编辑

撤销我的 pull request 的人认为 Stackless Python 的 join() 的工作方式与默认的略有不同。我没有在文档中看到它,但也许这是真的。文档是 here ,并且看起来与我的实现假定的行为相同,但这是项目所有者的观点。

最佳答案

事实证明,维护者有自己的自定义补丁版本的 stackless python,该版本破坏了他的一台计算机上的 API。

关于python - 出于平台遗留原因, sleep 而不是 thread.join(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28821723/

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