4

Windows 7 (およびそれ以降の Linux) で実行中のすべての Python プロセスのリストを許容時間内に取得したいと考えています。結果に基づいて、メインのアプリケーションが依存する追加の新しいプロセスを開始したいと思います。

https://github.com/giampaolo/psutilから psutil を試しました:

import psutil
for process in psutil.process_iter():
    if process.name == 'python.exe':
        print(process)

これにより、見栄えの良い結果が得られましたが、実行には約1分かかりました!

psutil.process_iter() を使用してすべてのプロセスを反復処理することと、psutil.get_pid_list()を使用してすべてのプロセスを一覧表示することの両方が高速に受け入れられることがわかりましたが、Python プロセスの識別のために各プロセスの名前を取得します (これについては、process.cmdlineでさらに調査します)。 )高価なようです。

速度を大幅に改善する方法または別のアプローチを考えていますか?

4

1 に答える 1

3

ctypesを使用して、windows 関数EnumProcesses()(windows のバージョンから、Kernel32.dllまたはPsapi.dllwindows のバージョンに応じて) を直接使用します。

于 2012-09-23T16:56:35.007 に答える