gpt4 book ai didi

python - 为什么在 (python) pyglet.image 中引用一个类会导致 Windows 上的 CPU 负载过重?

转载 作者:太空狗 更新时间:2023-10-29 21:56:40 28 4
gpt4 key购买 nike

我正在使用 python 的 pyglet 模块(Windows 上的 python 3)。当我引用 pyglet.image 中的任何类时,python 的 CPU 使用率会上升并且在我退出 python 之前不会下降。例如:

Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.
C:\Anaconda3>python.exe
Python 3.4.3 |Anaconda 2.3.0 (64-bit)| (default, Mar 6 2015, 12:06:10) [MSC v.1
600 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import pyglet #No problem!
>>> pyglet.image.ImageData #Heavy CPU load until I exit python
<class 'pyglet.image.ImageData'>

这是预期的行为吗? 为什么提到这个类(甚至没有实例化它)会导致如此高的 CPU 负载?

我测试过的系统:

  • 安装了 Anaconda python 3.4.3 和 pyglet 的 Windows 7 桌面通过“pip install pyglet”:CPU 使用率高(我的问题)

  • 相同的 Win7 桌面与 Anaconda python 3.4.3,但 pyglet通过'pip install 安装 Mercurial + https://bitbucket.org/pyglet/pyglet ': CPU 使用率高。

  • 使用 python.org 和 pyglet 中的 python 3.5 的相同 Win7 桌面通过“pip install pyglet”安装:CPU 使用率高。

  • 安装了 python 3.4.2 和 pyglet 1.2.1 的 Fedora 22 联想笔记本电脑通过dnf:没问题。

  • 安装了 Anaconda python 3.4 和 pyglet 的 Windows 10 HP 笔记本电脑通过“pip install pyglet”:没问题。

这可能是硬件相关的吗?

最佳答案

可能与module上的以下几行有关:

# Initialise default codecs
from pyglet.image import codecs as _codecs
_codecs.add_default_image_codecs()

默认加载顺序codecs是:

# Add the codecs we know about.  These should be listed in order of
# preference. This is called automatically by pyglet.image.

# Compressed texture in DDS format
try:
from pyglet.image.codecs import dds
add_encoders(dds)
add_decoders(dds)
except ImportError:
pass

# Mac OS X default: QuickTime
(...)

# Windows XP default: GDI+
(...)

# Linux default: GdkPixbuf 2.0
(...)

# Fallback: PIL
(...)

# Fallback: PNG loader (slow)
(...)

# Fallback: BMP loader (slow)
(...)

因为延迟加载 pyglet.image 仅在您引用某些内容时加载,并且您可能正在使用一种缓慢的回退。如果是这种情况,也许您可​​以尝试安装/卸载编解码器,以便您一次使用一个编解码器并查明问题是否确实出在编解码器上。发布这些编解码器的版本可能有助于重现问题。

关于python - 为什么在 (python) pyglet.image 中引用一个类会导致 Windows 上的 CPU 负载过重?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33833646/

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