C++多线程调用Python多进程

来源:互联网 发布:资深淘宝美工招聘 编辑:程序博客网 时间:2024/05/15 03:09

C++、Java等编程想提高效率,很容易想到的就是使用多线程,而在Python中,由于使用了GIL,使得多线程效率非但没有将性能线性提升,反而可能会比单线程效率还低。在进程间不需要怎么通信的时候,multiprocessing就很好用了。但是翻遍了C/Python API没找到C语言调用Python多进程的方法。而目前的项目却恰好希望能用C++调用Python多进程。尝试了好多C/Python API都没有一个稳定可靠的方案,今天终于试出来了一种可行的方案!
该方案的前提是进程间不需要通信!
方法很简单,使用linux的shell启动python进程!
C++部分思路:
1. 使用c++创建多个线程,根据自己的逻辑写好入口函数和输入参数
2. 在线程入口函数中,将想要执行的linux命令封装成一个字符串如s=”python test.py a b c”,其中a,b,c是test.py的系统参数,完成了C++向python的传参,当然只是一些简单的类型
3. 定义好python的控制台上的输出,使用popen()执行s的命令并建立管道
4. 获取控制台的输出,并按照已定义好的规则来判断返回信息
5. 根据返回信息,执行对应的操作
Python部分思路:
基本不用修改,只是把普通的函数传参改为获取系统参数,将函数返回值改为控制台输出,当然返回值类型受限
该方案成功解决了C++多线程调用Python多进程的问题,提升了效率,缺点是进程间不能通信,只能相互传递比较简单的参数!
有时间把代码整理一下发上来!

0 0
原创粉丝点击