我正在使用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负载?
我testing过的系统:
安装了Anaconda python 3.4.3的Windows 7桌面和通过“pip install pyglet”安装的pyglet:高CPU使用率(我的问题)
与Anaconda python 3.4.3相同的Win7桌面,但是通过'pip install hg + https://bitbucket.org/pyglet/pyglet '安装的pyglet:高CPU使用率。
python.org中的python 3.5和通过“pip install pyglet”安装的pyglet相同的Win7桌面:高CPU使用率。
Fedora 22联想笔记本用python 3.4.2和pyglet 1.2.1通过dnf安装:没问题。
安装了Anaconda python 3.4的Windows 10 HP笔记本电脑和通过“pip install pyglet”安装的pyglet:没问题。
这可能是硬件依赖的吗?
这可能与模块上的以下几行有关:
# Initialise default codecs from pyglet.image import codecs as _codecs _codecs.add_default_image_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
只在您引用某个内容时加载,而您可能正在使用缓慢的后备之一。 如果是这种情况,也许你可以尝试安装/卸载编解码器,以便一次使用一个编解码器,并确定解码器是否确实存在问题。 发布您的这些编解码器版本可能有助于重现此问题。