問題タブ [greenlets]
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.
python - グリーンレットの問題をブロックしていますか?
イベント ループ (NodeJS など) に関しては、ブロック コードが罪であることは理解していますが、グリーンレット (グリーン スレッドであると私は信じています) の場合はどうでしょうか? ブロッキング関数を呼び出すコードの実行に問題はありますか?
python - Linux x86_64 for PowerPC での Python の greenlet と gevent のクロスコンパイル
Linux x86_64 ホストで、PowerPC ターゲット用にいくつかの追加の Python モジュール、具体的にはgreenlet、gevent、およびgevent-websocketsをクロスコンパイルしようとしています。現在、greenlet モジュールをクロスビルドしようとして立ち往生しています。
このサイトの情報を使用する:
http://randomsplat.com/id5-cross-compiling-python-for-embedded-linux.html
ビルド環境でこのセットアップを使用して、Python 2.7.2 をクロスコンパイルできました。
上記のスクリプトを使用して環境を構成し、greenlet モジュールをビルドしようとすると、次のようになります。
setup.py が/usr/include/python2.7
ホスト システムからプルされるのはなぜですか? ターゲットでそのディレクトリが見つかりません。ターゲット用に作成するにはどうすればよいですか?
助言がありますか?
ありがとう!
トレバー
更新#1:
ターゲットの rootfs のホストのコピーへの相対参照が正しくありませんでした。それを修正して再実行すると、次のようになります。
少なくとも、ターゲットのインクルード ライブラリをさらに見つけていますが、今は本当に困惑しています。:(
他に提案はありますか?
ありがとう!
更新#2:
フラグをコンパイラに追加することで-save-temps
(上記の更新されたエラー)、上記のエラー メッセージに記載されている中間アセンブラー コードを保存して調べることができました。破線は次のとおりです。
MR (移動レジスタ) op はかなり単純で、2 つの引数 ( ) のみを受け入れmr to-reg, from-reg
ます。追加レジスタ番号の括弧がどのように追加されたのかわかりません。FWIW、上記のヘッダー ファイルで参照されているマクロは次のとおりです。
マクロが単純に見えるので、これはコンパイラのバグではないかと思い始めています! 助言がありますか?... ありがとう!
python - PyMongo と gevent によるデッドロック
Django アプリケーションから、PyMongo と gevent を一緒に使用しています。本番環境では、Gunicorn でホストされています。
アプリケーションの起動時に単一の Connection オブジェクトを作成しています。バックグラウンド タスクを継続的に実行し、数秒ごとにデータベース操作を実行しています。
このアプリケーションは、Django アプリと同様に HTTP リクエストも処理します。
私が抱えている問題は次のとおりです。本番環境でのみ発生します。開発環境では再現できませんでした。アプリケーションをしばらくアイドル状態にすると (バックグラウンド タスクはまだ実行されています)、最初の HTTP 要求 (実際には最初のいくつか) で、実行する最初の「検索」操作が完了しません。グリーンレットは実際には再開しません。これにより、最初のいくつかの HTTP 要求がタイムアウトします。
どうすれば修正できますか?それは gevent や PyMongo のバグですか?
python - 親への例外をバブリングする Gevent greenlet
gevent を使用する場合、子 greenlet が例外をスローするたびに、それを親にバブルアップさせたい (理想的には、親に例外をスローさせる)。greenlets のドキュメントでは、これは自動的に行われると書かれていますが、gevent ではそうではないようです。
gevent で例外をバブルアップするにはどうすればよいですか?
ありがとう!
asynchronous - 単一のアプリケーションで gevent と tornado を使用するには?
私は、トルネードの ioloop をサポートしていないライブラリが gevent を使用して非同期に動作するように抑制できるように、同じアプリケーション内で gevent とトルネードを使用することに取り組んでいます。2 つの実際のシステム スレッドを実行する必要があると思いました。1 つは Tornado の ioloop 専用で、もう 1 つは gevent のループ専用です。ただし、システム スレッド内で gevent 関数を呼び出そうとするとnot implemented Error
、gevent cannot be used inside threads
. したがって、次のスニペットが示すように、モンキー パッチ スレッドも試しました。
継続中...
別のプロセスで、コマンド ラインで次のコマンドを実行します。
これにより、15 個の URL を同時に取得し、受信時に応答を返すことができます。私がよく理解していないのは、上記のコードがまったく機能する理由です。スレッド化が gevent によってパッチされ、グリーン スレッドに変わった場合、一度に 1 つのスレッドしか実行されないことを意味します。つまり、gevent が新しい応答のフェッチを停止している間、tornado の ioloop はブロックされ、古い要求が完了するまで新しい要求を処理しません。戻ってきた。gevent が Tornado の ioloop とどのように相互作用するかを誰か説明できますか?
python - geventとsockipy
[gevent][1] と [socksipy][2] を使って同時ダウンロードを試みた人はいないかと思っていました。
python - socket.io 接続での gevent タイムアウト エラー
ワニスのnginxと2つのピラミッドバックエンドを含むセットアップがあり、そのうちの1つはsocket.ioアプリを実行しています。ローカルの開発用コンピューターではすべてのスタックが正常に動作しますが、運用用コンピューターでは websocket の部分を操作できません。クライアントの socket.io が接続を試みたときに socketio アプリをスローするエラーのトレースバック:
すべてのpythonパッケージのバージョンを確認しましたが、両方のコンピューターで同一です。また、実稼働コンピューターを libevent 1.4.14b にアップグレードして、ローカル コンピューターと一致させました。
これをデバッグする方法がわかりません。助けてください!
python - いくつかのグリーンレットの1つが終了するまで待ちます
2つの異なる接続からデータを受信する2つの関数があり、一方から結果を取得した後、両方の接続を閉じる必要があります。
次に、各関数を生成します。
gevent.joinall
からの2つのグリーンレットの両方の準備ができるまで、現在のグリーンレットをブロックしlst
ます。
最初または2番目のグリーンレットの準備が整うまで待ちたい:
どうすればいいですか?
python - gevent pool.wait_available()メソッドの意味
ほら、人々。gevent.poolクラスとpool.wait_available()メソッドについて質問があります。どちらもコードスニペットです。
1.1。
2.2。
同様の結果が得られます:
誰かがwait_available()メソッドの意味を説明できますか?そしてそれの使用法の可能なケース。
======= update ========私はすでにそれをサルパスしました、それは正しく動作します、私が知りたいのはこれらの2つのコードスニペットの違いです。
python - Pythonと真の並行スレッド
私は何時間も読んでいて、Pythonマルチスレッドがシングルスレッドよりもどれほど速いかを完全に理解することができます。
質問は本当にGILから生じています。GILがあり、一度に1つのスレッドだけが実際に実行されている場合、マルチスレッドはシングルスレッドよりもどのように高速になりますか?
いくつかの操作でGILがリリースされることを読みました(ファイルへの書き込みなど)。それがマルチスレッドを高速化する理由ですか?
そして、グリーンレットについて。それらは並行性にどのように役立ちますか?これまでのところ、私が彼らに見ているすべての目的は、関数とそれほど複雑でないyield関数を簡単に切り替えることです。
編集:そして、世界でトルネードのようなサーバーは何千もの同時接続をどのように処理できますか?