Python에 CLIPS를 통합하기 위해 PyCLIPS를 사용합니다. Python 메소드는 clips.RegisterPythonFunction(method, optional-name)
을 사용하여 CLIPS에 등록됩니다. 여러 함수를 등록해야하고 코드를 명확하게 유지하려면 등록을 수행 할 데코레이터를 찾고 있습니다.PyClips에서 Python 메소드를 등록하는 데코레이터
가 현재 수행하는 방법이다 :
class CLIPS(object):
...
def __init__(self, data):
self.data = data
clips.RegisterPythonFunction(self.pyprint, "pyprint")
def pyprint(self, value):
print self.data, "".join(map(str, value))
이 내가 그것을하고 싶은 방법입니다
class CLIPS(object):
...
def __init__(self, data):
self.data = data
#clips.RegisterPythonFunction(self.pyprint, "pyprint")
@clips_callable
def pyprint(self, value):
print self.data, "".join(map(str, value))
그것은 방법의 코딩을 유지하고 한 장소에 등록 .
주의 : 이런 식으로 할
import clips
import multiprocessing
class CLIPS(object):
def __init__(self, data):
self.environment = clips.Environment()
self.data = data
clips.RegisterPythonFunction(self.pyprint, "pyprint")
self.environment.Load("test.clp")
def Run(self, cycles=None):
self.environment.Reset()
self.environment.Run()
def pyprint(self, value):
print self.data, "".join(map(str, value))
class CLIPSProcess(multiprocessing.Process):
def run(self):
p = multiprocessing.current_process()
self.c = CLIPS("%s %s" % (p.name, p.pid))
self.c.Run()
if __name__ == "__main__":
p = multiprocessing.current_process()
c = CLIPS("%s %s" % (p.name, p.pid))
c.Run()
# Now run CLIPS from another process
cp = CLIPSProcess()
cp.start()
파이썬에 대해 모르겠다. CLIPS와 C#을 통합하고 루프에 메소드를 등록하는 환경이있다. 그러나 당신의 방법 "pyprint"의 이름에서 아마도 CLIPS 출력을 파이썬으로 라우팅하기 위해 CLIPS 라우터를 사용해야 할 것입니다. –
pyprint는 간단한 테스트입니다. 나는 파이썬 함수를 사용하여 사실을 주장하고 멋진 것을 호출 할 것이다. – Lemoi