0

複数のプロセスを生成し、それぞれでインストルメンテーションを開始しています。プロセスが終了する直前にインストルメンテーションを停止しようとすると、インストルメンテーション プログラムが、プロセスが既に終了しているかのようにシェルでハングしているように見え、インストルメンテーションを停止するプロセスがありません。コードは次のとおりです。

from os import system,fork,getpid
from glob import glob
from sys import exit

for filename in glob("py/*.py"):
  f=fork()
  if f==0:
    system("callgrind_control --instr=on "+str(getpid()))
    execfile(filename,{})
    system("callgrind_control --instr=off "+str(getpid()))
    exit()

ハングアップの問題を解決するにはどうすればよいですか? 本当にインストルメンテーションを停止する必要がありますか?

4

1 に答える 1

0

の代わりに, パラメータcallgrind_controlを使用して、ハングアップの問題を解決しましたcallsystemshell=True

from os import system,fork,getpid
from glob import glob
from subprocess import call
from multiprocessing import Process

def caller(filename):
  pid=getpid()
  call(["callgrind_control","--instr=on",str(pid)],shell=True)
  execfile(filename,{})
  call(["callgrind_control","--instr=off",str(pid)],shell=True)

for filename in glob("py/*.py"):
  p=Process(target=caller,args=(filename,))
  p.start()
  p.join()
于 2012-05-31T06:09:01.277 に答える