問題タブ [concurrent.futures]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
239 参照

tornado - Future が終了するのを待っている間、Tornado RequestHandler はリクエストに参加できますか?

インスタンスの 1 つで が終了するRequestHandlerのを待っている間に、単一の Tornado クラスが新しいリクエストに参加できますか?Future

a を呼び出す Tornado コルーチンをデバッグしていたThreadPoolExecutorところ、コルーチンがエグゼキュータの終了を待っている間に、RequestHandlerがブロックされていることに気付きました。したがって、コルーチンが終了するのを待っているこのハンドラへの新しいリクエスト。

私の観察を再現するために書いたコードは次のとおりです。

ここで、2 回アクセスするlocalhost:8888/1と、次の出力が得られます。

しかし、私は次のことが起こると予想しています:

まだ10 秒ごとにRequestHandlerを取得しているため、 のみがブロックされているように見えることに注意してください。##実際、別の同一のRequestHandler(Handler2) を追加して および にアクセスするlocalhost:8888/1localhost:8888/2、期待される出力が生成されます。

これは正常ですか?これは意図した動作ですか?

私の悪い英語でごめんなさい。

0 投票する
1 に答える
8127 参照

python - コールバックでサブプロセスを使用するPythonのconcurrent.futures

Python から FORTRAN exe を実行しています。FORTRAN exe が完了するまでに数分かかります。したがって、exe の終了時にコールバックを起動する必要があります。exe は Python に何も返しませんが、コールバック関数では、Python を使用して FORTRAN からの出力テキスト ファイルを解析します。

このために私は と を使用concurrent.futuresadd_done_callback()ていますが、うまくいきます。しかし、Web サービスのこの部分とsubprocess.call() / Popen()、FORTRAN exe が実行されたときに戻るように呼び出す Python メソッドが必要です。次に、FORTRAN が完了すると、コールバック関数が呼び出されます。

フォームが送信されたときに fortran_execute() が呼び出され、FORTRAN が完了するのを待たずに「Fortran が実行されました」を返したい。

現在、Python メソッドは FORTRAN の完了を待たずに戻りますが、戻り時にコールバックもトリガーします。FORTRAN プロセスは引き続き実行され、最終的に完了するとコールバック関数を呼び出そうとしますが、futureが存在しないため例外がスローされTypeError: 'NoneType' object is not callableます。

subprocessでexeを開始し、関数を返し、exeの実行が終了したときにのみコールバックメソッドを呼び出すために、ここで何が欠けていますか?

0 投票する
3 に答える
36296 参照

python - Futures が開始したら、どのようにして Futures を停止しますか?

新しいconcurrent.futuresモジュール (Python 2 バックポートも備えている) を使用して、単純なマルチスレッド I/O を実行しています。このモジュールを使用して開始されたタスクを完全に強制終了する方法がわかりません。

私が見ている動作を再現する次の Python 2/3 スクリプトを確認してください。

このスクリプトの実行中は、通常の Control-C キーボード割り込みを使用して完全に強制終了することは不可能に見えます。私はOS Xで実行しています。

  • Python 2.7 ではkill、コマンド ラインからスクリプトを強制終了する必要があります。Control-C は単に無視されます。
  • Python 3.4 では、Control-C を 2 回押すと機能しますが、多くの奇妙なスタック トレースがダンプされます。

私がオンラインで見つけたほとんどのドキュメントは、古いthreadingモジュールでスレッドをきれいに殺す方法について語っています。ここではどれも当てはまらないようです。

concurrent.futuresまた、モジュール内で提供されているもの (Executor.shutdown()や など) を停止するすべてのメソッドはFuture.cancel()、Future がまだ開始されていないか完了している場合にのみ機能しますが、この場合は無意味です。すぐに未来を中断したい。

私の使用例は単純です。ユーザーが Control-C を押すと、適切に動作するスクリプトと同様に、スクリプトはすぐに終了する必要があります。それだけです。

では、使用時にこの動作を取得する適切な方法は何concurrent.futuresですか?

0 投票する
1 に答える
187 参照

python - Tornado Future オブジェクトが Redis にダンプされ、Redis から読み込まれる

私はトルネードでプッシュシステムを開発していました。長いポーリングを行っているため、後で結果を設定するために、Future オブジェクトのリストを保持する必要があります。次に、Future リストを Redis に保持したいので、Pickle モジュールを使用して各 Future を「ダンプ」し、Redis に設定しますが、Redis から取得した後、「ロード」します。元の Future オブジェクトではないことがわかりました。この Future オブジェクトで set_result 関数を呼び出すと、期待どおりに動作しません。

誰でもこれについて私を助けることができますか?

これは私のコードの一部です:

0 投票する
0 に答える
137 参照

java - Java future クラスを実装して並列処理を実現し、複数の同時接続用のシェル スクリプトを呼び出す方法

並列プログラミングを実現するために Java future クラスを使用しています。以下に示すように、シェルスクリプトを呼び出しています。Javaコントローラーから以下の関数を呼び出しています

future クラスのコントローラ実装で

スクリプトを呼び出すコードは次のとおりです。

複数のスクリプトを呼び出しており、それらを並行して実行したいのですが、実行中にエラーが発生しています

将来のクラスを使用する場合、sshセッションを取得する最大制限はありますか(このような5つのスクリプトを異なる目的で実行するため、同時セッションであり、それらすべてを並行して実行したいためです)。