問題タブ [stackless]

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 に答える
1652 参照

python - スタックレスPythonは、並行性をどのように高速化できますか?

スタックレスPythonはマルチコアをうまく​​利用していなかったので、Pythonスレッド/マルチプロセッシングよりも高速である必要があるのはどこですか?

すべてのベンチマークは、スタックレスpythonタスクレットを使用してpythonスレッドのロックとキューと比較します。これは不公平です。ロックの効率は常に低いためです。

ロックなしでシングルスレッド関数呼び出しを使用する場合は、スタックレスPythonと同じくらい効率的である必要があります。

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

erlang - ホット コード スワッピングやサンドボックスをサポートしているプログラミング言語はどれですか?

ユーザーが AI を作成し、それをゲームの一部として実行できる Web ベースの MMO ゲームを作成したいと考えています。グラフィックには Html5 を使用する予定で、スマートフォンからアクセスできるように Web ベースにしたいと考えています。サンドボックス化、同時実行性、ホット コード スワッピング、および作業を容易にする大規模なライブラリをサポートするプログラミング言語を見つける必要があります。

現在、私の研究では、Erlang、Stackless Python、および Lua について調べています。どんな助けでも大歓迎です。

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

python - ブロッキングチャネルと非同期メッセージパッシング

「メッセージパッシング」には2つの方法があることに気づきました。1つはErlangの使用を確認し、もう1つはStacklessPythonからのものです。私が理解していることから、ここに違いがあります

Erlangスタイル-メッセージが送信され、受信プロセスのメールボックスにキューに入れられます。そこから、FIFOベースで削除されます。最初のプロセスがメッセージを送信すると、続行できます。

Pythonスタイル-プロセスAはプロセスBに送信するためにキューに入れられます。Bは現在他のアクションを実行しているため、Bが受信する準備ができるまでAはフリーズします。Bが読み取りチャネルを開くと、Aはデータを送信し、両方とも続行します。

これで、Erlangメソッドの長所は、ブロックされたプロセスがないことです。Bが受信できない場合でも、Aは続行できます。しかし、私が書いたいくつかのプログラムでは、メッセージの流入が流出よりも多いため、Erlangメッセージボックスが数百(または数千)のメッセージでいっぱいになる可能性があることに気づきました。

今、私はどちらのフレームワーク/言語でも大きなプログラムを書いたことがないので、あなたの経験はこれであるのだろうかと思います。

はい、私はこれが抽象的なことを知っていますが、私はかなり抽象的な答えも探しています。

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

python - Stackless Python 3.1 を使用した基本的な非同期 (非ブロッキング) HTTP クライアントのソリューションはありますか?

更新: 独自の非同期 Web サーバーの作成 (Dave Beazley によるプレゼンテーションに続く) など、Py3 で多くの作業を行った後、最終的に Python (および私のコードの膨大なスタック) をダンプまし。調べてみてください: GitHub (最近のすべての興味深いコードの 95% がここにあります)、npm (ユーザー フレンドリーとは言えないパッケージ マネージャー; よくやったeasy_install、あなたは自分の名に恥じない)、めちゃくちゃモジュールの巨大なリポジトリ (事実上 24 時間 365 日公開されている大量の新しいものを含む)、巨大で活気のあるコミュニティ、すぐに使用できる非同期 HTTP とファイル処理...、これらすべて ( V8のおかげで)の 3 分の 1 で光の速度—何が気に入らないのですか?プロパガンダの続きを読む: 「スクリプティングの未来」 (スライド ホスティング提供: SpreeWebdesign )。

非同期の非ブロッキング方式で HTTP を提供する (および HTTP 要求を行う) 方法を探しています。私が行ったように、 Stackless Python 3.1 (ドキュメントについてはこちらも参照) を選択した場合、これを行うのは難しいようです。

非常に有益で詳細な記事How To Use Linux epoll with Pythonのようないくつかの基本的な例があり、いくつかの貴重な情報を含むstacklessexamplesという名前の Google コード プロジェクトがあります (ただし、Python 3.x 互換コードはありません)。

それで、何日も Web で調査を行い、これまでに見つけた断片をまとめようとした結果、かなり使用可能な非同期 HTTP ライブラリを知っている人はいますか? WSGI 準拠である必要はありません (私はそれには興味がありません)。

サーバー部分は、複数の非ブロッキング HTTP 要求を処理できる必要があります (および、HTTP ヘッダー処理の基本を実行できる可能性があります)。HTTP クライアント部分は、HTTP リクエストを介して非ブロッキングの方法で Web コンテンツを取得できる必要があります (基本的なヘッダー処理も行いますが、承認などの凝った処理は行いません)。

これまでの私の調査では、非ブロッキング HTTP が示されています。

  1. スタックレスで協調的にスケジュールされた環境で意味のある唯一の方法です。

  2. 標準ライブラリのおかげで Stackless Python 3 で実行可能ですselect epoll(Py2.6 で導入されました。一部のソリューションは を好みますが、それは pyevent プロジェクトが Py2.5 で開発を停止したように見えるため、libevent別のハードルを意味します)。

  3. 残念ながら、ほとんどの人は HTTP のブロックに依存しているため、まだ家庭用品ではありません。

今のように見える方法では、ソケット プログラミングの基礎を学び、独自の HTTP サーバー/クライアント ライブラリを作成する必要があります。私はその分野のバックグラウンドがほとんどなく、そのように「歴史を繰り返す」ことになっているので、私はまだその仕事から遠ざかっています.

関連するポインタについては非常に満足しています。select.epoll私は;を利用するソリューションを非常に好みます。古いものよりもはるかにスケーラブルであることを覚えているようですasyncore(ただし、誰かがこれについてより正確なデータを持っているかもしれません)。最小要件として、ソリューションは Ubuntu 9.10 で実行する必要があります。

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

python - スタックレス python の使用が困難で、dict に書き込めません

Pythonで実装し、複数のコアを利用したい単純なmap-reduceタイプのアルゴリズムがあります。

2.6 のネイティブ スレッド モジュールを使用するスレッドは複数のコアを使用しないことをどこかで読みました。本当?

スタックレス python を使用して実装しましたが、奇妙なエラーが発生しています [更新: クイック検索で、スタック レスでは複数のコアが許可されないことがわかりました。他の代替手段はありますか?]

ただし、上記のコードでは、ラベルに割り当てられた値、つまり辞書の変更が失われます。

上記の伝播関数は、MicroThreads (つまり、TaskLets) の呼び出し可能として使用されます。

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

python - スタックレスのメールボックス

私のスタックレス アプリケーションでは、Erlang スタイルのメッセージ ボックス キューが必要です。受信タスクレットが受信できるようになるまで送信タスクレットをブロックすることを強制する代わりに、送信タスクレットが受信者のメッセージボックスにメッセージをキューに入れ、スリープしている場合は受信者を起こせるようにしたいと考えています。

送信側タスクレットは、受信側タスクレットの状態に関係なく、メッセージを送信して実行を継続できる必要があります。

これを行う方法があると確信しています、私はまだそれを見つけていません...

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

python - スタックレス Python タスクレット バインド関数の戻り値を取得しますか?

スタックレスエキスパート、

Stackless Python でタスクレットを作成することができました (Stackless 側と C 側の両方から)。

スタックレスでタスクレットを作成するには、任意の Python 呼び出し可能オブジェクト (関数) をタスクレット (および必要なパラメーター) にバインドすると、バインドされた呼び出し可能オブジェクトがタスクレットとして実行されるように思えます。ただし、任意の callable には、実際には呼び出し元にとって重要な戻り値がある場合があります。しかし、タスクレットとして実行されているバインドされた callable の戻り値を取得する方法はまだ見ていません。

純粋な Stackless Python 側では、Micromanaging と呼ばれる使用法を目にします。これは、元の関数を管理関数でラップし、元の関数の戻り値キャプチャして、他のコンテキストで使用するためにどこかに保存することができます。

残念ながら、私の特別な使用例では、C (C++) 側からタスクレットを作成し、後で使用する重要な戻り値を持つ (ブロックする可能性がある) Python 呼び出し可能オブジェクトにバインドします。C関数を動的に呼び出し可能なPyObjectに変換する方法(モジュールテーブルの初期化などを含まない)を見つけられず、静的ステートレスC 関数 (プロトタイプは PyObject* (PyObject*, PyObject*) でなければならないと思います) は一般的に、C++ の世界ではまずい考えです。

また、Stackless C API には、タスクレットの戻り値を取得するための適切な関数が含まれていないようです。上記の Micromanaging 関数 (ステートフルである可能性があります) を Python で記述し、どこかに保存された戻り値を取得する方法を (ステートフルな方法で、つまりグローバル変数を使用しないで) 提供する唯一のオプションですか? または、私が検討できる他のオプションがあるのでしょうか?

どうもありがとうございました、

リン

PS Cおよびオペレーティングシステムレベルのプログラミングでは、スレッド関数の戻り値は終了コードに対してのみ意味があり、スレッド関数には厳密な関数プロトタイプがあることを理解しています。つまり、C関数は実行可能になるためにいくつかの厳密な規則に従わなければなりませんスレッドとして/によって。そして今、私たちはPythonについて話している:)

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

python - UDP パケットを生成する最速の方法

UDP マルチキャストでバイナリ メッセージをプッシュするためのテスト ハーネスを構築しています。

プロトタイプは Twisted リアクター ループを使用してメッセージをプッシュします。これは、必要なトラフィック レベル (毎秒約 120000 メッセージ) を達成しています。

テスト マシンには 16 個のコアがあり、これらのコアにこれを分散させて、実際にハーネスを飛ばしたいと考えています。

この出力を上げるためにアプリケーションをどのように設計するか (イベント ループ アプローチまたは CSP スタイル アプローチのいずれかを使用) についてアイデアを持っている人はいますか?

また、プロトタイプのほとんどの時間は UDP への書き込みに費やされています。

どんなアイデアでも大歓迎です。

0 投票する
9 に答える
772 参照

c - 他の言語を実装するためにCを使用すると、何らかの形で設計が制約されましたか?

過去20年間に登場したほとんどの新しいプログラミング言語はCで書かれているようです。これは、Cが一種のポータブルアセンブリ言語と見なすことができるため、完全に理にかなっています。しかし、私が興味を持っているのは、これが言語の設計を何らかの形で制約しているかどうかです。私の質問を促したのは、関数を呼び出すためにCスタックをPythonで直接使用する方法について考えることでした。明らかに、プログラミング言語の設計者は、好きな言語で好きなことをすることができますが、新しい言語を書くために選択した言語は、特定の考え方にあなたを置き、無視するのが難しい特定のショートカットを提供するようです。その言語で書かれていることから来るこれらの言語の他の特徴はありますか(良いか悪いか)?

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

python - CCP StacklessプレゼンテーションのBLUEとは何ですか?

EveのStacklessPythonでは、Pythonの「BLUE」オブジェクトについての話があります。誰かがこの技術についての詳細を知っていますか?