pytorch 属性错误:模块“os”没有属性“killpg”

wwtsj6pe  于 2023-08-05  发布在  其他
关注(0)|答案(2)|浏览(608)

下面是我的代码:

if __name__ == "__main__":
    try:
        main()
    except Exception:
        exc_info = sys.exc_info()
        traceback.print_exception(*exc_info)
        os.killpg(0, signal.SIGKILL)

    exit(0)

字符串
当程序中出现异常时,我想用os模块的killpg方法终止当前进程,但出现错误消息“AttributeError:模块'os'没有属性' killpg '”。我用的是Python 3.7版本。
你能帮我解决这个问题吗?非常感谢您的光临。

hgqdbh6s

hgqdbh6s1#

也许你的python版本是2.x,你可以修改你的代码并重试,使用“os.kill()”

if __name__ == "__main__":
    try:
        main()
    except Exception:
        exc_info = sys.exc_info()
        traceback.print_exception(*exc_info)
        os.kill(0, signal.SIGKILL)

    exit(0)

字符串

kkbh8khc

kkbh8khc2#

注意:你应该学习如何查看Python文档,它会简化编程(并且你会更有效率)。所以把python标准库文档加入书签(这也给了你快速链接到语言文档)。
在任何情况下,相关页面:https://docs.python.org/3/library/os.html#os.killpg
(and关于文档的另一个技巧:你看到URL了吗?只需将/3/替换为/2/,您就可以获得Python 2的文档。因此,我们看到另一个答案使用了错误的假设(并且os.kill也可能不可用。
函数os.killpg在Python 2和Python3上都存在,但这两个页面都表明它只在Unix/Linux和类似的系统上可用(所以可能也在macos上)(注意:not Emscripten,not WASI 意味着在Unix和Linux上,它也不能在列出的受控和可移植环境中工作:JavaScript和WebAssembly,因此在浏览器中它将无法工作)。
为什么?Python不控制进程,所以它只是处理对操作系统的请求。不是所有的操作系统都有 * 进程组 * 的概念,或者它们以不同的方式处理。注意:os.kill仅在Python 2.7和Python 3.2及更高版本中支持windows。
在任何情况下,如果你想终止当前进程,你应该使用exit()或其他更强大的函数。如果你使用线程,也有一些特殊的函数。你可以在这个网站上看到关于它的各种问题和答案。(但是你的问题是关于使用os.killpg的,所以我不会用更好的方法来转移答案)。
简而言之:该函数向自己的进程组发送信号,但仅在进程组可用的操作系统上(例如2023,而不是Windows)。这不是终止调用进程的最佳方式。

相关问题