现在有个程序 A,使用 C++编写。
然后有一个 Pythno 脚本 B,脚本 B 用于去某些指定的网站抓取数据,抓取的时间由程序 A 来决定,只有特定时间内抓取的数据才有效。
这里有 2 个限制
在这种情况下,只能在程序 A 里编写调用 python 脚本的代码。
请问类似这种情况,由 C++调用 Python 是否是最优选择?如果不是有没有更好的解决办法。
1
gimp 2021-01-24 16:35:19 +08:00
脚本 B 经常性需要替换,不知道现在是怎么替换的
如果基于协议解耦呢,Python 提供 HTTP 、TCP 、UDP 接口,灵活性应该会高一点儿 |
2
locoz 2021-01-24 16:39:10 +08:00 via Android
把 B 做成 RPC 就好了
|
3
QBugHunter OP |
4
billlee 2021-01-24 16:44:14 +08:00
C++ 调 python 完全没有问题,不要乱优化
|
5
nuk 2021-01-24 16:46:19 +08:00
我们都是 popen 来一发
|
6
wunonglin 2021-01-24 16:50:50 +08:00
rpc ?
|
7
QBugHunter OP @billlee
赵 4 老师说决定不要做语言 A 调用语言 B 这样的事情,但我又想不出别的好办法 |
8
Ptu2sha 2021-01-24 17:28:42 +08:00
mq rpc
|
9
BingoXuan 2021-01-24 19:47:25 +08:00 via Android
@QBugHunter
当然是开进程调用啦。不要老想着 a 语言调用 b 语言,然后写了各种接口。最后其实完全可以像楼上那样 popen 执行,抓取返回数据 |
10
wzzzx 2021-01-24 23:59:52 +08:00
这个调用没毛病,做好分层就可以。现在 Qt 的开发都是 C++ + QML,可以理解为 C++带动 JS,问题不大
|
11
wzzzx 2021-01-25 00:00:47 +08:00
不过我来搞的话,会看业务吧,看看能不能通过协议来调用,跨进程通信。这样耦合度会更低,也更好维护
|
12
dddd1919 2021-01-25 10:13:08 +08:00
如果 python 只是简单的任务脚本,需要调用执行即可:c++ 用 shell 命令 + 传参调用 python 脚本
|