問題タブ [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.
continuations - PyPy 1.7が「スタックレス」スタックを実装しないのはなぜですか?
スタックレスが含まれているPyPy1.7のデフォルトのビルドでは、再帰の深さの制限なしで(まっすぐに)実行する機能は提供されません。
なんで?
スタックレスサポート継続スタイルの関数呼び出しと末尾再帰を備えたPyPyのPreviusビルド。
コルーチンを含むソリューションについては質問していませんが、統合スタッケルの問題を探しています。
python - pythondotnetでスタックレスpython2.7.2を使用することは可能ですか?
プラットフォーム:Windows7両方の32ビットバージョンを想定しています。
私の現在の理解では、両方のインストールプロセスでpython.exe自体を置き換える必要があるため、これは不可能です。
両方から機能を取得するには、それぞれのソースをマージする必要があると思いますか?
Stackless Python: http: //zope.stackless.com/
Python for .NET: http: //pythonnet.github.io/
あらゆる種類のcpythonライブラリ(特にmatplotlib)にアクセスしたいので、IronPythonではなくPythonfor.NETを使用しています。
python - RPC を実行せずに SPickle を使用して (実行状態だけでなく) タスクレット コードをシリアル化することは可能ですか?
SPickle でスタックレス python (2.7.2) を使用して、別のマシンで実行するためにセロリ経由でテスト メソッドを送信しようとしています。テスト メソッド (コード) を pickle に含めて、実行マシンの Python パスに強制的に存在させないようにしたいと考えています。
次のプレゼンテーションを参照しています: https://ep2012.europython.eu/conference/talks/advanced-pickling-with-stackless-python-and-spickle
チェックポインティング スライド 11 に示されているテクニックを使用しようとしています。
クライアントコード:
サーバーコード:
結果:
私が間違っていること、またはこれが可能かどうかについての提案はありますか?
celeryd で動的モジュールのロードを行うための代替提案も良いでしょう (sPickle を使用する代替として)。私は次のことを試しました:
しかし、動的にロードされたモジュールは、別の celeryd 呼び出し、つまり別のリモート呼び出しでは持続しないようです。
recursion - このタイプの再帰を排除するにはどうすればよいですか?
これは、単純な左再帰または末尾呼び出し再帰よりも少し複雑です。ですから、この種の再帰をどのように排除できるのか疑問に思っています。以下に示すように、私はすでに独自のスタックを保持しているため、関数はパラメーターや戻り値を必要としません。ただし、それはまだ特定のレベルまで自分自身を呼び出しています (または下げています)。私はこれをループに変えたいと思っていますが、これについてしばらくの間頭を悩ませていました。
すべての「実際のロジック」を printf("dostuff at level #n") メッセージに置き換えた単純化されたテスト ケースを次に示します。これは Go にありますが、この問題はほとんどの言語に当てはまります。ループと goto の使用は完全に許容されます (しかし、私はこれで遊んでみましたが、複雑になり、手に負えなくなり、そもそも機能しないように見えます)。ただし、追加のヘルパー関数は避ける必要があります。これをある種の単純なステート マシンに変換する必要があると思いますが、...どれでしょうか? ;)
実用性に関しては、これは毎秒約 2000 万回実行されます (スタックの深さは後で最大 1 から 25 の範囲になります)。これは、自分のスタックを維持することが、関数呼び出しスタックよりも安定して高速になる場合です。(この関数には他の関数呼び出しはなく、計算のみです。) また、ガベージが生成されない = ガベージが収集されません。
だからここに行きます:
}
更新-ここでいくつかの議論を行い、さらに考えた後:
理論的には必要なことを行うはずの次の擬似コードを作成しました。
もちろん、私のカスタム ユース ケースの nextsibling() に記入するのは難しい部分です。しかし、必要な深さ優先のトラバーサル順序を維持しながら内部再帰を排除するための一般的な解決策と同様に、この大まかなアウトラインは何らかの形でそうする必要があります。
performance - C/C++/Pascal/etc. スタックレス言語の場合、大幅に遅くなりますか?
関連する質問: スタック トレース/同様のデバッグ機能はどのように表示されますか?
これがばかげた質問でしたらすみませんが、私は低レベルのプログラミングについてあまり知りません。ほとんどの CPU にはスタックに関連する命令があることは知っていますが、適切に最適化されたスタックレス言語は本当にそれほど遅くなるでしょうか?
c++ - C ++のスタックレスまたはヒープレスの実装はありますか?
C ++標準では、スタックやヒープについては何も言及されていません。これらは実装固有であり、これは事実です。
それらはC++標準の一部ではありませんが、とにかくそれらを使用することになります。そのため、それらは言語自体の一部であり、メモリまたはパフォーマンスの目的で考慮する必要があります。
したがって、私の質問は、スタックとヒープを使用しないC ++の実装がありますか?
java - Java でのスレッド スケジューリングのシミュレーション (スタックレス Java?)
いくつかの学術研究では、単一のプロセッサで実行される複数のスレッドをシミュレートする必要があります。
コード内に *call_scheduler()* 呼び出しを挿入できるようにしたいと考えています。このコードでは、現在の「スレッド」が一時停止し (どのコード行にあるかを覚えています)、スケジューリング関数によって、どのスレッドを解放するかが決定されます。
Python では、これはスタックレス Python を使用してきちんと実装できます。Javaの代替手段はありますか?
実際のスレッドと、一度に 1 つのスレッドのみを強制的に実行するいくつかのメッセージング キュー (またはパイプ) を使用して実装することもできますが、これは見苦しく問題のある解決策です。
python - ウィンドウズ 8 非互換性?
自分のコードを win8 ラップトップで実行できません。私は次の組み合わせで作業しています:
- スタックレス Python 2.7.2
- Qt 4.8.4
- Pyサイド1.1.2
- Eclipse/Pydev および WingIDE
これは私の Win7 PC では問題なく動作しますが、Windows 8 を搭載したデモ ラップトップを購入しました。私の知る限り、すべてが私の PC と同じ方法でインストールされています。
プログラム (同じコード) を実行すると、次の警告が表示されます。
「Qt: 未テストの Windows バージョン 6.2 が検出されました!」
わかりました、それが私の問題の原因かもしれませんが、エラーも発生します:
- 上記の警告の後にプログラムが終了することがあります(日食のみだと思います)
- 時々私は APPCRASH を取得します (日食だけだと思います)
- 時々私は例外を受け取ります: TypeError: メタクラスベースを呼び出すときにエラーが発生しました: mro() は不適切なレイアウトでベースを返しました ('')
- 時々、例外が発生します: TypeError: メタクラス ベースを呼び出すときにエラーが発生しました: 複数のベースにインスタンス レイアウトの競合があります
特に最後の 2 つは Windows の問題のようには見えませんが、私の PC の win7 のインストールと他の違いは見られません。何が起こっているのか、またはこれを修正する方法を知っている人はいますか? インストールのステップを見逃したのでしょうか、それとも互換性がないのでしょうか?
乾杯、ラース
誰かがこれについて意見を持っていますか?
stack-overflow - コルーチンスタックはLua、Python、Ruby、またはその他の言語で成長しますか?
決定論的な軽量並行性をサポートする言語がいくつかあります-コルーチン。
- Lua-コルーチン
- スタックレスPython-タスクレット
- Ruby-ファイバー
- もっとたくさんあるはずです...しかし、現在私はあまり考えていません。
とにかく、私が知る限り、多くの分離されたスタックが必要なので、これらの言語がスタックの増加をどのように処理するかを知りたいと思います。これは、4KBのRubyファイバー(明らかに大きなオーバーヘッド)についての言及を読んだためです。彼らはこれをスタックオーバーフローを防ぐ機能として宣伝しています。しかし、なぜスタックが自動的に成長すると言っているのかわかりません。Cスタックに制限されていないVMがスタックの増加を処理できないことは意味がありませんが、内部についてよく知らないため、これを確認することはできません。
これらの種類のマイクロスレッドでのスタックの増加をどのように処理しますか?明示的/暗黙的な制限はありますか?それとも、明確かつ自動的に処理されますか?
python - Stackless Python を使用して、実行中の大規模なプログラムの状態を保存しますか?
実行に何十ものファイルが含まれる大規模な (4.5 GB コードベース) Python テスト フレームワークを考えると、その多くは直接 pickle 可能ではありません。プログラムの初期実行を 1 行の関数でラップし、スタックレス タスクレットを作成することは可能ですか?その関数を実行し、実行中にプログラム全体の状態を保存する方法としてタスクレットをピクルしますか? Stackless の tasklet pickling 機能の限界は何ですか?