0

関数をタイムアウトするためにタイムアウトデコレータ(シグナルを使用)を操作しようとしましたが、メインスレッドエラーが発生します

数秒後に関数をタイムアウトにする他の解決策

ありがとう

4

1 に答える 1

0

私にとって、このような問題はマルチスレッドアプローチを使用して解決できます。メソッドを実行するスレッドが実行中のタスクをプリエンプトしたり、OS 機能を使用して実行中の関数をプリエンプトしたり、コードを実行したりすることはできないからです。

  1. メソッド コードを実行するスレッドを生成し、指定された時間が経過するまでメイン スレッドをカウントダウンさせることができます。

  2. もう 1 つの方法は、システム プロセス シグナルにマッピングされたシグナルを送信できるシグナル Python フレームワークを使用することです (すべての OS がサポートしているわけではないため、すべてのシグナルをマッピングすることはできません)。このようなシグナルが送信されると (signal.alarm(3) は 3 秒後に送信します)、Python プロセスは現在のインタープリター命令の実行を終了し、定義したハンドラーを実行します。

ところで、あなたの質問がこれと重複していることに気付きました.2番目の解決策のスニペットを見つけることができます.

于 2013-07-04T10:07:54.103 に答える