如何解决资源不足:open_files 错误
how to resolve not enough resources: open_files error
file_in_directory(File):-
working_directory(D,D),
directory_files(D,Entries),
member(File,Entries).
tree_file_in_directory(File):-
file_in_directory(File),
atom_codes('.treeliker',TreeLikerCodes),
atom_codes(File, FileCode),
append(_FileStripped,TreeLikerCode,FileCode).
run_tree_liker(File):-
process_create(path(java),
['-Xmx8gb','-cp', 'TreeLiker.jar', 'ida.ilp.treeLiker.TreeLikerMain','-batch', File], [stdout(pipe(Out)), process(PID)]).
forall(
tree_file_in_directory(File),
(
run_tree_liker(File),
run_weka(File, Lines)
)
).
我有一个这样的程序,其中 run_tree_liker/1
和 run_weka/2
使用 process_create/3
到 运行 一个 java jar 程序。第一个程序为目录中的每个 .treeliker 文件创建一个 .arff 文件。 运行 weka 部分然后使用 .arff 文件并向数据库断言一些事实。
目录和程序 运行 中大约有 1400 个 .treeliker 文件,但它总是在大约 400 个之后用 Error: Not enough resources: open_files
切断。如何让程序一次打开一个文件并在进程完成后关闭文件,这样就不会发生此错误?
我需要使用 setup_call_cleanup/3 和 close/1
run_jar(Jar,Option,Lines):-
setup_call_cleanup(
process_create(path(java),['-jar',Jar,Option],[stdout(pipe(Out))]),
read_lines(Out,Lines),
close(Out)).
感谢邮件列表中的 Jan。
file_in_directory(File):-
working_directory(D,D),
directory_files(D,Entries),
member(File,Entries).
tree_file_in_directory(File):-
file_in_directory(File),
atom_codes('.treeliker',TreeLikerCodes),
atom_codes(File, FileCode),
append(_FileStripped,TreeLikerCode,FileCode).
run_tree_liker(File):-
process_create(path(java),
['-Xmx8gb','-cp', 'TreeLiker.jar', 'ida.ilp.treeLiker.TreeLikerMain','-batch', File], [stdout(pipe(Out)), process(PID)]).
forall(
tree_file_in_directory(File),
(
run_tree_liker(File),
run_weka(File, Lines)
)
).
我有一个这样的程序,其中 run_tree_liker/1
和 run_weka/2
使用 process_create/3
到 运行 一个 java jar 程序。第一个程序为目录中的每个 .treeliker 文件创建一个 .arff 文件。 运行 weka 部分然后使用 .arff 文件并向数据库断言一些事实。
目录和程序 运行 中大约有 1400 个 .treeliker 文件,但它总是在大约 400 个之后用 Error: Not enough resources: open_files
切断。如何让程序一次打开一个文件并在进程完成后关闭文件,这样就不会发生此错误?
我需要使用 setup_call_cleanup/3 和 close/1
run_jar(Jar,Option,Lines):-
setup_call_cleanup(
process_create(path(java),['-jar',Jar,Option],[stdout(pipe(Out))]),
read_lines(Out,Lines),
close(Out)).
感谢邮件列表中的 Jan。