答案1
标准 Python 解释器 (CPython) 是单线程的。这是由所谓的“全局解释器锁”(GIL) 要求的,它不允许同时真正并发访问 Python 对象。参见例如https://wiki.python.org/moin/GlobalInterpreterLock了解详情。
因此,常规 Python 脚本(例如不使用multiprocessing
库来生成多个解释器进程)一次只能在一个 CPU 线程上运行。这意味着在具有四个线程的处理器(具有超线程的双核)上,它最多只能消耗所有线程总 CPU 时间的 25%,或单个 CPU 线程的 100%。
因此,正如 htop 报告的那样,您的脚本几乎占用了一个 CPU 线程的 100%,因此它实际上以最大速度运行。这里没有什么不寻常的。
如果脚本是你的,你可以尝试调整或重写它,以便通过使用multiprocessing
图书馆如前所述。但并非所有代码都可以并行化。如果你不能真正改变脚本,你就必须接受它的运行方式。