問題タブ [callable]

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 投票する
1 に答える
7884 参照

python - 「リストオブジェクトが呼び出せません」

現在、Maya 用の Python ベースのツールを作成しています。他のツールの無数の他のセクションで使用したコード行を使用していますが、何らかの理由で今回は機能しません。そうでない理由がわかりません。

実行すると、Python はobject = objects[x] line: 'list' object is not callableでエラーを返します。電話がかけられていないことを考えると、これは奇妙です...

この腹立たしい問題の原因は何ですか?

編集: print objects[x]を実行すると、期待どおりにオブジェクトの名前が返されることに注意してください...

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

python - 呼び出し可能オブジェクトでデコレーターを使用するときにユーザー定義の関数名を返す

次のコード フラグメントを検討してください。

これは以下を返します:

このオブジェクトbarは と呼ばれる関数のように動作しますが、デコレータと一緒に使用するとbar内部実装の詳細が公開されます。オブジェクトを変更する方法はありますか(おそらく関数に適切な引数を渡すことによって)、代わりに戻ります__call__print_timingname__init__

? print_timingデコレータが通常の機能を引き続き使用できるようにするソリューションが必要です。ランニング print foo()は与える

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

python - Python tp_call関数を定義するための正確な要件は何ですか?

私はC++クラスをPythonにバインドしていて、以前の問題に対する興味深い解決策に到達しました。残念ながら、これは別の質問につながり、簡単な答えもないようです。

各関数を「呼び出し可能な」PyObjectにラップしています。呼び出し可能にするのは、呼び出し関数を定義することです(C側ではこれはPyTypeObjectのtp_callメソッドです)。

tp_callは、引数リストとして(PyObject *、PyObject *、PyObject *)を受け入れるだけの三項関数を使用しているようです。
ここで問題となるのは、この関数が引数(PyObject * self、PyObject * args)を受け取るPyCFunctionの代わりになる必要があるということです。Python側ではこれを簡単に行うことができますが、C側では、バイナリ関数が必要なときに三項関数が必要になるようです。呼び出し可能な関数を単純にするために、PyCFunctionポインターを使用するか、それをカプセル化する方法はありますか?

0 投票する
4 に答える
6578 参照

java - 呼び出し可能オブジェクトの並列実行

複数の呼び出し可能オブジェクトを並列に実行したい。しかし、ExecutorServiceは、すべての呼び出し可能オブジェクトが終了するまで常に待機しているようです。

私は次のことを試しました:

これで、executorService内のすべての呼び出し可能オブジェクトが終了したときにforループが呼び出されます。私の知る限り、executorService.isParallelセッターはありません;-)。

呼び出し可能オブジェクトを並列実行させるための正しいアプローチは何でしょうか?

ヒントをありがとう!

0 投票する
4 に答える
7673 参照

java - java Callable FutureTask Excecuter:終了したタスクをリッスンする方法

私は実行者サービスにまったく慣れていません。自分ですべてをやるのが好きでしたが、これらのサービスを信頼する時が来たと思います。

で手渡したいExecuterですRunnable。実行者はそれをaでラップし、FutureTaskそれを私に返します。ここで、polldone()メソッドを呼び出します。done()しかし、メソッドがtrueを返すときに通知を受け取りたいと思います。

get()が終了するまでブロックするメソッドがありますが、Runnableそれから、それがいつ終了するかを確認するために、すべてのジョブに追加のスレッドが必要になります。

Callableタスクの終了について通知を受け取るために、実行者に追加の情報を渡すことはできますか?

ここに行く方法は何ですか?runメソッドの最後にコードを追加することはできますが、done()それでもfalseになる可能性があります...

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

java - Callable を乗っ取り、call() の前に隠しメソッドを実行する方法

より大きなプロジェクト (HypergraphDB) のいくつかのサブシステムに実装を追加していますが、重要なコードを変更することは避ける必要があります。このプロジェクトには、一部のデータベース操作のトランザクション ブロックを定義する約 70 個の Callable オブジェクトがあります。私はそのデータベースを置き換えており、私の (redis) は、トランザクション ブロックを定義する前に、影響を受けるすべてのキーが必要です。そのため、これらの Callables 内のパーツにアクセスし、call() を実行する直前に何か (「ウォッチ」) を実行する必要があります。

一部の Callable は自明ではなく、その一部については、その Callable で final フィールドを宣言し、それらを呼び出しの「外部」で定義する必要があるため、call() と getHandles() の両方がそれらにアクセスできます。

getHandles メソッドにアクセスできるようにするために、getHandles メソッドだけを持つインターフェースを定義しました。getHandles にアクセスするために、Callable をそのインターフェイスに一時的にキャストできます。IDE ではメソッドが「見える」ようになりましたが、テストする手段がありません。

これはうまくいきますか?

前のコード:

後のコード:

扱えるインターフェース:

}

そして最後に、それが呼び出されている場所:

0 投票する
4 に答える
986 参照

java - 複数のスレッドから情報を取得するには? ジャワ

同時に(ループ内で)複数の呼び出し可能なスレッドを開始し、メインスレッドの全員からいくつかの情報を返したいと考えています。これを実現する方法は?

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

java - Executor Service からの複数の結果を効率的に処理するにはどうすればよいですか

私は ExecutorService を初めて使用しますが、これに対する私のアプローチについて確信が持てません。既知のタスクで最大 100 のスレッドを処理できます。以下の一般的な形式を使用しています。ここでは、FutureTasks のリストを作成し、これらを ExecutorService に送信します。ExecutorService はこれらの保留中の結果を返し、別のリストに追加します。次に、保留中の結果ごとに get() を呼び出して、このリストを反復処理します。

私のクエリは次のとおりです: 100 個のスレッドすべてが完了するまで、順番に各 get() でブロックされませんか? これを行うより良い方法はありますか?

そして、 get() が Callable 実装の call() メソッドの結果を返すと仮定するのは正しいですか? デフォルトの FutureTask クラスを使用していますが、サブクラス化していません。

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

java - 例外がスローされないのはなぜですか?

私はこの簡単なコードを持っています:

メソッドで取得しSQLExceptionていgetConnection()ます。を入れればcatch例外はブロック内でキャッチされますが、そうでなければ例外はスローされませんが、エラーは発生しません。ロックされ、コードの実行を継続していないようです。

なぜこの動作ですか?私は何かを誤解しましたか?これは期待されていませんか?

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

java - Java で各スレッドの実行時間を制御することはできますか?

各スレッドが使用する時間を制御したい。

1 つのスレッドが何らかの処理を行い、別のスレッドがデータベース内のデータを処理しますが、生成されるデータの量が原因で、挿入は処理よりも遅くなります。そのデータを挿入するためのプロセッサー時間を増やしたいのです。

スレッドでこれを行うことは可能ですか? 今のところ処理をしているスレッドにスリープを入れていますが、挿入するタイミングはマシンによって異なります。これを行う別の方法はありますか?プログラム内でスレッド同期を使用する方法はありますか?