gpt4 book ai didi

python - Python 中信号量的清理

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

我正在使用信号量将工作交给 Python 中的另一个线程。 IE。主线程将一个项目放入队列中,然后调用信号量的 release 方法;工作线程将调用信号量上的acquire,然后从队列中弹出一个项目来进行处理。

还有一个特殊的 TERMINATE 项,Master 可以将其放入队列中,指示 Worker 结束。我的问题是,工作人员是否应该在终止之前发出 acquire 来匹配信号量上任何未完成的 release ?信号量属于worker对象,线程终止后不再使用;然而,该进程可能会长期存在,并在将来创建许多工作对象/线程/信号量。

  1. 放弃计数非零的信号量是否安全? (我怀疑是这样,但我想仔细检查一下。)

  2. 无论是否安全,您(主观)认为在结束之前完全清理信号量“更好”吗?

我最感兴趣的是 Python(更具体地说是 CPython)中的信号量行为。然而,任何有关其他语言(例如 C 的 pthreads)中信号量的一般智慧也将受到欢迎。

最佳答案

#1:是的,放弃计数非零的信号量是安全的。毕竟这只是一个值。

#2:减少代码量会更好。努力编写最少量的清晰代码以实现正确的实现。

关于python - Python 中信号量的清理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7313898/

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