如何使用fork()在多处理环境中处理Tensorflow会话? 我正在运行一个运行TysFoeSoad的C++应用程序。应用程序必须与fork()配合运行,如下代码所示。然而,我明白了这一点。当代码到达Session.run()命令时,代码挂起。由于我是C++初学者,我想问你一个建议,我应该如何运行TysFoSurf。p>
编辑:对象是在主线程中创建的,可以多次调用如何使用fork()在多处理环境中处理Tensorflow会话? 我正在运行一个运行TysFoeSoad的C++应用程序。应用程序必须与fork()配合运行,如下代码所示。然而,我明白了这一点。当代码到达Session.run()命令时,代码挂起。由于我是C++初学者,我想问你一个建议,我应该如何运行TysFoSurf。p>,c++,tensorflow,fork,C++,Tensorflow,Fork,编辑:对象是在主线程中创建的,可以多次调用fork() int main () { Myapp myapp("path_to_model"); switch(fork()) { case 0: {/* Child */ myapp.get_embedding(some_data); break; } case -1:{ /* Error */ cerr << "Problem forking" <&
fork()
int main ()
{
Myapp myapp("path_to_model");
switch(fork()) {
case 0: {/* Child */
myapp.get_embedding(some_data);
break;
}
case -1:{ /* Error */
cerr << "Problem forking" << endl;
break;
}
default:
cout << "on the parent process";
break;
}
}
return 0;
}
int main()
{
Myapp Myapp(“路径到模型”);
开关(fork()){
案例0:{/*子案例*/
myapp.get_嵌入(一些_数据);
打破
}
案例-1:{/*错误*/
cerr与您的问题无关,但名称以下划线开头,后跟大写字母(例如\u MYAPP\u H
)保留给编译器和标准库实现。不要自己定义这样的符号或名称。有关详细信息,请参阅。@Someprogrammerdude:谢谢。如果您先分叉,然后初始化Tensorfllow,您应该可以。@n.m.这听起来很合理,但可能会分叉很多次,并且对象是在主进程中创建的。我将添加t他回答了这个问题。
//#ifndef _MYAPP_H_
//#define _MYAPP_H_
#ifndef MYAPP_H_
#define MYAPP_H_
#include <iostream>
#include <tensorflow/core/public/session.h>
using namespace std;
using namespace tensorflow;
class Myapp {
string protobuf_fn; // model filename
public:
Session *sess;
/*constructor with model file name*/
Myapp (string pb_fn){
//init the session and load the graph
TF_CHECK_OK(loadModelpb(pb_fn));
}
/*read trained model file into the session*/
tensorflow::Status loadModelpb(string pb_fn);
/* get an embedding by running Session.run()
* For now, it hangs when gets called on a child process.
*/
Tensor get_embedding(Data some_data) const;
};
#endif /*_MYAPP_H_*/