top
Ubuntu のプロセスリスト ( /を使用) で、System Monitor
最もメモリを消費する (200 MB 以上) のが でしたpython
。原因が Python IDE (羽) 自体は Python で書かれています。
私はsetproctitleを挿入することでプログラムの名前を変更できると思った。プロシージャタイトルの設定パッケージですが、Wing が使用している Python のバージョンは私のものとは異なります。setproctitle
コンパイルする必要があり、Wing が使用している Python は完全なインストールではありません (Wing サポートに問い合わせましたが、変更される可能性は低く、setproctitle が組み込まれる可能性も低いです)。
setproctitle
実行中のプロセスの名前しか変更できないため、Wing を起動してプロセス名を変更するスクリプトも作成できませんでした。
その後、/proc/PIDNUM/comm に書き込もうとしましたが、その「ファイル」は「rw」であるにもかかわらず、そこに書き込むことはできません。
私はついに、この特定のケースに対する、それほど移植性はないものの解決策を見つけました。しかし、Linux システム コールを使用して別のプロセス (子プロセスの可能性もある) のプロセス名を変更する標準的な方法があるかどうかを知りたいです。
答え1
プロセスは自身の にのみ書き込むことができます/proc/pid/comm
。IDE のコードを変更できるようですので、 に書き込むだけで済みます/proc/self/comm
。
別の方法としては、Python 実行可能ファイルの名前を変更してから、すべての#!
行を変更するという方法がありますが、これは面倒な作業になる可能性があります。
LD_PRELOAD
他の(より面倒な)オプションとしては、C コードを記述してまたは を使用することですptrace
。
答え2
derobert がすでに示したように、プロセス テーブルで別の名前を取得する最も簡単な方法は、おそらく、「プライベート」Python 実行可能ファイルの名前を から に変更することpython
ですwing_ide
。
起動コマンド は/usr/bin/wing4.1
、実際には 2 番目のスクリプトを呼び出す最小限のシェル スクリプトであり、/usr/lib/wingide4.1/run-wing.sh
これを次のように修正しました。
@@ -66,7 +66,9 @@
# Location of Python interpreter to use, if not already set
if [ "${WINGPYTHON}" = "" ]; then
- if [ -x "${WINGHOME}/bin/PyCore/python" ]; then
+ if [ -x "${WINGHOME}/bin/PyCore/wing_ide" ]; then
+ WINGPYTHON="${WINGHOME}/bin/PyCore/wing_ide"
+ elif [ -x "${WINGHOME}/bin/PyCore/python" ]; then
WINGPYTHON="${WINGHOME}/bin/PyCore/python"
elif [ "${WINGIDE_USE_QT4}" = "1" ]; then
WINGPYTHON="${WINGHOME}/bin/runtime-python2.7/bin/python2.7"
それに加えて、${WINGHOME}/bin/PyCore/python
を にコピーしました${WINGHOME}/bin/PyCore/wing_ide
。
Wing 5.0でも同様のことが可能ですが、インストール後にデフォルトで取得されるPythonは
WINGPYTHON="${WINGHOME}/bin/runtime-python2.7/bin/python2.7"
wing_ide
これを同じディレクトリにコピーして使用する必要があります
答え3
を使用すると、プロセスを呼び出すために使用されるコマンド全体を見ることができますtop
が、デフォルトでは表示されません。これを小文字で切り替えますc
。これにより、Python アプリを別のアプリと区別できるようになります。
コマンドライン呼び出しとプロセス名の違いは、 および として proc にも表示されcmdline
ますcomm
。