由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - python统计程序怎么转成C++或者golang?
相关主题
易写性,易维护和执行效率综合来看python在2009年差点死掉,后来为什么起死回生了?
Python至少还能管3年Python pandas 是坑不?
从心底讨厌scalaPandas问题不少啊...
今天的学习成果发现还是得用R
python要把@当作矩阵乘法算符Golang 从13年到现在goog trends翻了快十倍
求python大牛指路python太慢了
Anaconda装起来会跟已有的python dist有什么冲突吗?这次node把python也给干了
如果不用很高级的feature,C++/Scala是否值得一战?goLang吸引了很多Ruby/Python程序员
相关话题的讨论汇总
话题: python话题: c++话题: golang话题: go话题: 进程
进入Programming版参与讨论
1 (共1页)
a***c
发帖数: 1
1
用statsmodels, sklearn,pandas做的一堆程序怎么写成c++或者golang程序?搜了一
下好像这两个语言没什么能用的统计库啊。gsl凑合有一点点非常基本的,golang只有
github上有一些也不全。
r****t
发帖数: 10904
2
为什么要转?
w***g
发帖数: 5958
3
别想了, 这个不值得做的. 你的路子是看看python程序哪儿还有瓶颈,
然后如果python优化不上去的话用C++写个模块加速下. 我见人用numba,
自己没用过.
你说的这三个, C++根本没戏.

【在 a***c 的大作中提到】
: 用statsmodels, sklearn,pandas做的一堆程序怎么写成c++或者golang程序?搜了一
: 下好像这两个语言没什么能用的统计库啊。gsl凑合有一点点非常基本的,golang只有
: github上有一些也不全。

a***c
发帖数: 1
4
麻烦是server是用golang写的,怎么在golang里叫python程序,开一个subprocess吗,
还是俩独立进程socket通信,怎么把算出来的daraframe数据传回给给golang?
g****t
发帖数: 31659
5
Python的性能优化这几年没有进步。我查过去年pyconf 2018有个talk,讲的东西和2015
年没区别。


: 别想了, 这个不值得做的. 你的路子是看看python程序哪儿还有瓶颈,

: 然后如果python优化不上去的话用C 写个模块加速下. 我见人用numba,

: 自己没用过.

: 你说的这三个, C 根本没戏.



【在 w***g 的大作中提到】
: 别想了, 这个不值得做的. 你的路子是看看python程序哪儿还有瓶颈,
: 然后如果python优化不上去的话用C++写个模块加速下. 我见人用numba,
: 自己没用过.
: 你说的这三个, C++根本没戏.

w***g
发帖数: 5958
6
这个是比较恶心.
如果不计较性能还是可以搞的.
1. go可以调c/c++, c/c++可以调embedded python. 所以再不济, 通过c转一转还是可
以弄出来的. 用C/C++包装的好处是C/C++和go的接口可以完全不涉及到dataframe或者
numpy array.
go直接调python, 按这个可能更方便
https://www.datadoghq.com/blog/engineering/cgo-and-python/#embedding-cpython
-a-primer
但是go只接调python, 如果没有比较好的第三方库支持, dataframe和numpy array
可能会搞不定.
2. 说来说去, python好的地方和不好的地方, 就是python是全局的.
你没法给每一个线程起一个单独的python解释器. 所以如果是直接embed集成的,
任凭你go怎么优化, 最后到python还是单线程. 在go里对应模型要加锁, 一次
只能有一个线程/goroutine在访问.
3. 你也没亏到底. 毕竟一旦到numpy, 还是能用多核的, 就是效率不是最好.
这个是我建议的套路. 只要python程序稳定, 容易实现, 架构简单不容易出错.
如果非要上多核, 那就只能上多进程了.
如果没有限制, 还是会按上面的套路做. 一个go进程对应一个python解释器.
然后限制每个进程只用一个核. 然后起多个go进程. "每个进程限制一个核"
这事情可能不一定能做到. OpenMP是OMP_NUM_THREADS控制, 但是谁知道
python乱七八糟的库都是怎么弄的. 如果起多进程, 每个进程的python又试图
占据多核, 进程间就会打架可能还会死锁. 然后就说不清了.
subprocess在编程上是比较难处理的. 如果你就是embed python, crash了
go服务器也crash, 重启就可以了. subprocess的话, python进程crash,
你的go服务器还要负责擦屁股重启子进程, 一不小心还会出现zombie进程.
我一般不会上这条路.

【在 a***c 的大作中提到】
: 麻烦是server是用golang写的,怎么在golang里叫python程序,开一个subprocess吗,
: 还是俩独立进程socket通信,怎么把算出来的daraframe数据传回给给golang?

a***c
发帖数: 1
7
谢wdong老师指点,我看看这个go-python能搞定不。但是这个库好像只能py2,难道还
要把py3转成py2。。。
本来想着把Python部分重写,看来不行。如果server用C++重写,boost python接口,
是不是也有上面说的golang一样的问题?或者做一个单独模块,用Flask管理python部
分,websocket通信,两个模块独立运行可行吗。

cpython

【在 w***g 的大作中提到】
: 这个是比较恶心.
: 如果不计较性能还是可以搞的.
: 1. go可以调c/c++, c/c++可以调embedded python. 所以再不济, 通过c转一转还是可
: 以弄出来的. 用C/C++包装的好处是C/C++和go的接口可以完全不涉及到dataframe或者
: numpy array.
: go直接调python, 按这个可能更方便
: https://www.datadoghq.com/blog/engineering/cgo-and-python/#embedding-cpython
: -a-primer
: 但是go只接调python, 如果没有比较好的第三方库支持, dataframe和numpy array
: 可能会搞不定.

a***c
发帖数: 1
8
最近为了这个玩意儿开始学golang,这些go的库文档质量感觉不咋地啊,在godoc上自
动生成一个index就完
w***g
发帖数: 5958
9
你提醒我了,其实你flask直接对外提供服务就可以了。go都不需要。
用go或者C++做服务器,无非是追求性能。如果瓶颈是在模型上,服务器用啥
根本无所谓。你可以用flask写服务器, 然后stress test,用perf record
和perf report看看, 服务器那块是不是瓶颈。
下面是原来写的,你随便看看。
-----------------------------
我还是建议 python - C/C++ - go这条路。因为你找第三方go-python库,numpy啥的未
必支持。
你说的对,C++连python,同样有多进程的问题。这个是python的死穴(同时也是
python极大的优势,如果没这个,python未必能流行起来)。
如果你go没啥根基, 建议还不如砸时间到C++上。C++再战10年没啥问题。
go比较适合轻量级服务。你这后台一上pandas/numpy,怎么也清凉不起来了。

【在 a***c 的大作中提到】
: 谢wdong老师指点,我看看这个go-python能搞定不。但是这个库好像只能py2,难道还
: 要把py3转成py2。。。
: 本来想着把Python部分重写,看来不行。如果server用C++重写,boost python接口,
: 是不是也有上面说的golang一样的问题?或者做一个单独模块,用Flask管理python部
: 分,websocket通信,两个模块独立运行可行吗。
:
: cpython

s*********y
发帖数: 6151
10
你这个问题其实是典型的decoupling问题
建议把运算单独打包成一个服务 参见micro service的基本思想
R******e
发帖数: 623
11
不是很多很复杂的话,直接上Grumpy,再检查修改一下就是了。

【在 a***c 的大作中提到】
: 用statsmodels, sklearn,pandas做的一堆程序怎么写成c++或者golang程序?搜了一
: 下好像这两个语言没什么能用的统计库啊。gsl凑合有一点点非常基本的,golang只有
: github上有一些也不全。

x****u
发帖数: 44466
12
水木社区有人嫌numpy慢,2万rmb高价求兼职用C++重写

了一
只有

【在 w***g 的大作中提到】
: 别想了, 这个不值得做的. 你的路子是看看python程序哪儿还有瓶颈,
: 然后如果python优化不上去的话用C++写个模块加速下. 我见人用numba,
: 自己没用过.
: 你说的这三个, C++根本没戏.

x****u
发帖数: 44466
13
换windows吧,python只要加几个decorator就变成了dcom server
创建的时候系统首先会尝试运行中实例,找不到才会新建
当年深度学习库不稳定,用这玩意10%的崩溃率也不怕

cpython

【在 w***g 的大作中提到】
: 这个是比较恶心.
: 如果不计较性能还是可以搞的.
: 1. go可以调c/c++, c/c++可以调embedded python. 所以再不济, 通过c转一转还是可
: 以弄出来的. 用C/C++包装的好处是C/C++和go的接口可以完全不涉及到dataframe或者
: numpy array.
: go直接调python, 按这个可能更方便
: https://www.datadoghq.com/blog/engineering/cgo-and-python/#embedding-cpython
: -a-primer
: 但是go只接调python, 如果没有比较好的第三方库支持, dataframe和numpy array
: 可能会搞不定.

1 (共1页)
进入Programming版参与讨论
相关主题
golang虽然不会一统江湖,但是,干掉python ,ruby是迟早的事情python要把@当作矩阵乘法算符
scala和go的区别求python大牛指路
Django这个framework怎样?Anaconda装起来会跟已有的python dist有什么冲突吗?
go很牛啊。这个10ms 非常快了。如果不用很高级的feature,C++/Scala是否值得一战?
易写性,易维护和执行效率综合来看python在2009年差点死掉,后来为什么起死回生了?
Python至少还能管3年Python pandas 是坑不?
从心底讨厌scalaPandas问题不少啊...
今天的学习成果发现还是得用R
相关话题的讨论汇总
话题: python话题: c++话题: golang话题: go话题: 进程