c++调用python脚本执行得非常慢,请问是什么原因?

FromBen 2018-08-09 05:04:51
直接执行python脚本,大概80到90毫秒之间,c++调用python脚本,执行的时候为3秒多,计时程序段是在python脚本里。紧急求助,怎么c++调用下会这么满呢?实验环境python3.6 Vs2013 cpu上跑的。
...全文
1074 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_34361289 2021-04-23
  • 打赏
  • 举报
回复
请问怎么控制会话关闭呢,因为主要还是C调用python函数。
FromBen 2019-09-24
  • 打赏
  • 举报
回复
引用 12 楼 喵喵酱不是酱 的回复:
[quote=引用 9 楼 FromBen的回复:][quote=引用 7 楼 smallkingking 的回复:] 博主,请问具体是怎么将加载tensorflow和其他的分开的呢?
代码不全,意思已经说到了,就是在前面建立会话恢复模型,预测完手动关闭会话,因为要经常调用,建立会话和恢复模型等和预测过程分离。 import tensorflow as tf tf.Graph().as_default() sess=tf.Session() sess.run(tf.global_variables_initializer()) def predict(picturepath): predictions_value=sess.run(output_tensor, feed_dict={input_tensor: picturepath}) return predictions_value if __name__=="__main__": predictions_value=predict(picturepath) print(predictions_value) sess.close() [/quote] 这样的话也直接调用predict函数就可以了吗,我试了下,速度也没提升很多啊[/quote] 你如果只是调用一次predict函数,当然看不出来差别。这个时间的话,得看平均时间,加载一张图片不能说明问题,你遍历下某个含大量图片的文件夹再试试。
喵喵酱不是酱 2019-09-20
  • 打赏
  • 举报
回复
引用 9 楼 FromBen的回复:
[quote=引用 7 楼 smallkingking 的回复:]
博主,请问具体是怎么将加载tensorflow和其他的分开的呢?


代码不全,意思已经说到了,就是在前面建立会话恢复模型,预测完手动关闭会话,因为要经常调用,建立会话和恢复模型等和预测过程分离。

import tensorflow as tf

tf.Graph().as_default()
sess=tf.Session()
sess.run(tf.global_variables_initializer())

def predict(picturepath):
predictions_value=sess.run(output_tensor, feed_dict={input_tensor: picturepath})
return predictions_value

if __name__=="__main__":
predictions_value=predict(picturepath)
print(predictions_value)
sess.close()



[/quote] 这样的话也直接调用predict函数就可以了吗,我试了下,速度也没提升很多啊
喵喵酱不是酱 2019-09-20
  • 打赏
  • 举报
回复
引用 3 楼 FromBen的回复:
问题已解决,是由于调用的python脚本中要加载tensorflow的原因,将加载部分单独写成一个模块,其他的写在一起,然后就正常了。
请问是将import的部分单独写成一个模块吗?有相关代码能看看吗
FromBen 2019-02-25
  • 打赏
  • 举报
回复
引用 7 楼 smallkingking 的回复:
博主,请问具体是怎么将加载tensorflow和其他的分开的呢?


代码不全,意思已经说到了,就是在前面建立会话恢复模型,预测完手动关闭会话,因为要经常调用,建立会话和恢复模型等和预测过程分离。

import tensorflow as tf

tf.Graph().as_default()
sess=tf.Session()
sess.run(tf.global_variables_initializer())

def predict(picturepath):
predictions_value=sess.run(output_tensor, feed_dict={input_tensor: picturepath})
return predictions_value

if __name__=="__main__":
predictions_value=predict(picturepath)
print(predictions_value)
sess.close()



FromBen 2019-02-25
  • 打赏
  • 举报
回复
引用 4 楼 目标是神奇宝贝大师! 的回复:
我在python里读一张图放进训练好的模型就要用掉1s多 请问你是怎么解决的

time_start = time.time()
img_out_softmax = sess.run(out_softmax, feed_dict={input_x: [img]})
time_end = time.time()
print('classification cost',time_end-time_start)

这个时间的话,得看平均时间,加载一张图片不能说明问题,你遍历下某个含大量图片的文件夹再试试。
  • 打赏
  • 举报
回复
我在python里读一张图放进训练好的模型就要用掉1s多 请问你是怎么解决的 time_start = time.time() img_out_softmax = sess.run(out_softmax, feed_dict={input_x: [img]}) time_end = time.time() print('classification cost',time_end-time_start)
FromBen 2018-09-01
  • 打赏
  • 举报
回复
问题已解决,是由于调用的python脚本中要加载tensorflow的原因,将加载部分单独写成一个模块,其他的写在一起,然后就正常了。
赵4老师 2018-08-23
  • 打赏
  • 举报
回复
是Release版吗?
ztenv 版主 2018-08-22
  • 打赏
  • 举报
回复
这个还真没有遇到过,如果在C++中直接以执行命令行的方式调用python呢?

64,642

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧