1

いくつかのプロセスを作成し、Python multiprocessing モジュールで実行しようとしています。以下のコードを使用して、送信されている各プロセスのプロセス名を特定しましたが、少なくとも名前が同じに見えるすべてのプロセスが同じプロセッサで実行されていることに気付きました.

ジョブはいつ他のプロセッサで実行を開始しますか? 実行中のプロセッサ名を特定するにはどうすればよいですか?

from multiprocessing import Process
import platform

def process1():
    print 'process_1 processor =',platform.processor() 

def process2():
    print 'process_2 processor =',platform.processor()

def main():
    print 'Main processor =',platform.processor()
    processlist = []
    p1 = Process(target = process1)
    p1.start()
    processlist.append(p1)

    p2 = Process(target = process2)
    p2.start()
    processlist.append(p2)

    for i in processlist:
        i.join()

if __name__ == '__main__':
    main()

OUtput
Main processor = Intel64 Family 6 Model 37 Stepping 2, GenuineIntel
process_2 processor = Intel64 Family 6 Model 37 Stepping 2, GenuineIntel
process_1 processor = Intel64 Family 6 Model 37 Stepping 2, GenuineIntel
4

1 に答える 1

2

このライブラリで実行されているプロセスの CPU 名を特定する方法はありませんが、プロセスに関連する CPU CORE 番号を特定できます。

import psutil,os
self_process = psutil.Process(os.getpid())
self_process.get_cpu_affinity()
# [0,1] - i have 2 core cpu and process can load both cores
self_process.set_cpu_affinity([1])
# now this process can load only one core #1

メイン プロセスで pid を取得し、スポーン後に CPU コアを実行するように設定できます。マルチCPUの動作についてはわかりません...

于 2013-08-30T20:46:18.087 に答える