2015-11-20 25 views
7

我使用python的pyglet模塊(Windows上的python 3)。當我引用pyglet.image中的任何類時,python的CPU使用率會跳起來,直到我退出python時纔會下降。例如:爲什麼提到一個類(python)pyglet.image會在Windows上造成大量的CPU負載?

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負載?

系統我測試過:

  • Windows 7桌面與蟒蛇蟒蛇3.4.3和pyglet安裝 通過 'PIP安裝pyglet':高CPU使用率(我的問題)

  • 安裝了Anaconda python 3.4.3的相同Win7桌面,但通過'pip install hg + https://bitbucket.org/pyglet/pyglet'安裝的pyglet :高CPU使用率。

  • 通過'pip install pyglet'安裝的python.org和pyglet 相同的Win7桌面:CPU使用率高。

  • Fedora 22聯想筆記本電腦用python 3.4.2和pyglet 1.2.1安裝 通過dnf:沒問題。

  • Windows 10惠普筆記本電腦與蟒蛇python 3.4和pyglet安裝 通過'pip install pyglet':沒問題。

這可能是硬件相關的嗎?

+1

你可以嘗試分析它:https://docs.python.org/3.5/library/profile.html – Nathaniel

+1

如果按下ctrl-C,你會得到一個回溯嗎? – shx2

+0

導致高CPU使用率的輸入立即返回。如果我按Ctrl-C,我不會收到回溯。 – Andrew

回答

2

這可能與對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的只有加載,當你參考到某個地方,而你可能正在使用緩慢的後備之一。如果是這種情況,也許你可以嘗試安裝/卸載編解碼器,以便一次使用一個編解碼器,並確定解碼器是否確實存在問題。發佈您的這些編解碼器版本可能有助於重現此問題。

+0

感謝您的參與!直到明天我都無法檢查,但這很有成效,所以你得到了賞金。 – Andrew

相關問題