3

kill() を使用してグリーンレットを強制終了しようとすると、「ブロック」パラメーターがデフォルトで True になります。

Greenlet.kill(self, exception, block, timeout)

ドキュメントは次のように述べています。

block がTrue (デフォルト) の場合、greenlet が終了するか、オプションのタイムアウトが期限切れになるまで待ちます。block がFalseの場合、現在の greenlet は予定外ではありません。

これを正しく理解する方法は?どうも

4

1 に答える 1

3

2 つの greenletAとがあるとしましょうB

1) 内部Bで を呼び出しますA.kill(block=True)。そのコンテキスト スイッチが発生した直後に、Python は にジャンプしA、 で例外を発生させAます。A処理するかどうか、別の場所にジャンプする可能性、キル時にタイムアウトが発生する可能性などがあります。

2) 内部Bで を呼び出しますA.kill(block=False)。コンテキスト スイッチは発生しません。Bkill 後も他のコマンドを実行し続けます。ただし、kill コマンドは実行されるようにスケジュールされています。つまり、Python がAそれにジャンプするとすぐに例外が発生します。

したがって、私の知る限り、「ブロック」は単に「今すぐ切り替えを行う」ことを意味します。

于 2014-01-21T08:33:33.550 に答える