繁体   English   中英

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

[英]Why does referring to a class in (python) pyglet.image cause heavy cpu load on Windows?

我正在使用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的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的相同Win7桌面和通过'pip install pyglet'安装的pyglet:高CPU使用率。

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

  • Windows 10惠普笔记本电脑与Anaconda python 3.4和pyglet通过'pip install 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仅在您引用某些内容时加载,并且您可能正在使用其中一个缓慢的后备。 如果是这种情况,也许你可以尝试安装/卸载编解码器,这样你就可以一次使用一个编解码器,并找出问题确实存在于编解码器中。 发布这些编解码器的版本可能有助于重现该问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM