1

スレッドを使用して多数の URL を取得する、Python 2.7 で記述された小さなクロール アプリケーションがあります。しかし、ここで見つけたいくつかのアドバイスで後者の問題を修正しようとしましたが、きれいに閉じたり、KeyboardInterrupt に適切に応答したりしません。

def main():
    ...
    for i in range(NUMTHREADS):
        worker = Thread(target=get_malware, args=(malq,dumpdir,))
        worker.setDaemon(True)
        worker.start()

    ...

    malq.join()


if __name__ == "__main__":
    try:
        main()
    except KeyboardInterrupt:
        sys.exit()

Ctrl-Z を押してジョブを強制終了するのではなく、Ctrl-C を押したとき、または実行が完了したときに正しく終了するようにする必要があります。

ありがとう!

4

1 に答える 1

0

GILがIOバウンドの複数のスレッドを持つPythonアプリケーションの信号処理にどのように影響するかについての議論があります。どうやらIOバウンドスレッドは、メインスレッドの処理時間を枯渇させ、想定どおりにシグナルを処理できなくなります。代替の並列処理オプションサブプロセスモジュールやマルチプロセッシングなど)または非同期フレームワーク(asyncoroなど)を検討することをお勧めします

于 2013-02-09T03:56:10.960 に答える