SWI Prolog 和 Python 之间的 2 路 interop/IPC
2-way interop/IPC between SWI Prolog & Python
有模块可以从 Python (pyswip) =to=> Prolog 调用,但是有没有办法从 Prolog =to=> Python 调用相反的方式?
我需要它以便我可以从 SWI-Prolog 调用 Spacy-NLP 模块
找不到 SWI 是否支持 ZeroMQ。
这是文件“c:\hello.py”中的示例 python 代码,用于在命令行中提取参数 q(可选)。它的结果回显到标准输出流。
import sys
def hello():
return 'hello world: ' + ','.join(sys.argv[1:])
if __name__ == '__main__':
print(hello())
这是文件“c:\hello.pl”中的序言程序调用上述 python 代码作为过程:
do :-
process_create(path('python3.7'),
['c:/hello.py', foo, bar],
[stdout(pipe(In))]), %output stream named In
read_string(In, Len, X), %In=input stream to read_string/3
write(X), nl, halt.
激活此 prolog/python 组合并将结果写入输出流
$ swipl -g do c:\hello.pl
hello world: foo,bar
这是你想要的吗?
有模块可以从 Python (pyswip) =to=> Prolog 调用,但是有没有办法从 Prolog =to=> Python 调用相反的方式?
我需要它以便我可以从 SWI-Prolog 调用 Spacy-NLP 模块
找不到 SWI 是否支持 ZeroMQ。
这是文件“c:\hello.py”中的示例 python 代码,用于在命令行中提取参数 q(可选)。它的结果回显到标准输出流。
import sys
def hello():
return 'hello world: ' + ','.join(sys.argv[1:])
if __name__ == '__main__':
print(hello())
这是文件“c:\hello.pl”中的序言程序调用上述 python 代码作为过程:
do :-
process_create(path('python3.7'),
['c:/hello.py', foo, bar],
[stdout(pipe(In))]), %output stream named In
read_string(In, Len, X), %In=input stream to read_string/3
write(X), nl, halt.
激活此 prolog/python 组合并将结果写入输出流
$ swipl -g do c:\hello.pl
hello world: foo,bar
这是你想要的吗?