このコードがどのように機能しているかを私に説明していただけませんか？
このコードは、3つの方法を使用してPYQT5アプリケーションで完了するのに長い時間がかかるタスクを実行する方法を示しています。「qthread」のサブクラス化、「qobject」と「movetothread」を組み合わせ、「qrunnable」を使用します。各メソッドには、5サイクルを実行するループが含まれ、各サイクルで1秒間一時停止します。メインプログラムは、終了する前にタスクが終了するまで待ちます。