2015-11-20 12 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負荷につながりますか?アナコンダのpython 3.4.3とpygletと

  • Windows 7のデスクトップは 'pygletをインストールピップ' を介して をインストール::高CPU使用率(私の問題)

  • を私がテストしてみた

    システムAnaconda python 3.4.3と同じWin7デスクトップですが、 'pip install hg + https://bitbucket.org/pyglet/pyglet'によってpyglet がインストールされています。CPU使用率が高いです。高いCPU使用率:

  • 'pygletをインストールPIP' を介してインストールpython.orgからのpython 3.5およびpyglet と同じWin7のデスクトップ

  • python 3.4.2とpyglet 1.2.1がインストールされたLenovoノートパソコン からdnf:問題ありません。問題なし:アナコンダのpython 3.4およびpygletと

  • のWindows 10 HPのノートパソコンは、 'pygletをインストールピップ' を介して をインストールしました。

これはハードウェアに依存しますか?それはおそらくmodule上の次の行に関連している

+1

プロファイリングを試すことができます:https://docs.python.org/3.5/library/profile.html – Nathaniel

+1

ctrl-Cを押してもトレースバックが得られますか? – shx2

+0

CPU使用率の高い入力がすぐに戻ります。私がCtrl-Cなら、私はトレースバックを取得しません。 – Andrew

答えて

2

# 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のあなたが参照している場合にのみロードされていますおそらく遅いフォールバックの1つを使用している可能性があります。そのような場合は、コーデックをインストール/アンインストールして、一度に1つずつ使用し、問題が実際にコーデックであるかどうかを調べることができます。これらのコーデックのバージョンを投稿すると、問題が再現される場合があります。

+0

見ていただきありがとうございます!明日までこれをチェックすることはできませんが、これは生産的なので、恩恵を受けます。 – Andrew

関連する問題