Python の別のスレッドで作業をしようとしています。私は PyQt を使用しているので、私のスレッドは QThreads です。
作業自体には、PIL を使用して大きな画像を読み込み、画像を QImage に変換することが含まれます。
ワーカー スレッド内で画像を何度も読み込むコードの例を次に示します。
class testThread(QtCore.QThread):
def run(self):
while True:
im = Image.open('c:\zheadline.tif')
try:
imgData = ImageQt.ImageQt(im)
print (imgData.width())
except:
print ("Image load error")
画像は非常に大きい (16k) ため、実際に読み込むには数秒かかる場合があります。ただし、この間、GUI は非常に応答しなくなり、多くの場合、数百ミリ秒間フリーズします。
どうしてこれなの?私のマシンには 16 個のコアがあるので、1 つのスレッドからの作業が他のすべてのスレッドの速度を低下させる理由はありませんよね?
基本的に、ユーザー エクスペリエンスをまったく中断することなく、これらの大きな画像をバックグラウンドで読み込めるようにしたいと考えています。メインの GUI スレッドをまったく邪魔することなく、メインの作業を別のスレッドにプッシュする方法を知っている人はいますか?
その他の情報: 「thread.start()」で QThreads を開始しています。また、読み込み中に GUI が完全にフリーズするわけではありません。