3

请教下, 用 Python 调用 goroutine 实现的线程池, 做一些 http 请求可行吗

 3 years ago
source link: https://www.v2ex.com/t/786883
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

V2EX  ›  Python

请教下, 用 Python 调用 goroutine 实现的线程池, 做一些 http 请求可行吗

  song135711 · Song2017 · 1 天前 · 1126 次点击
21 条回复    2021-07-01 23:43:22 +08:00

wellsc

wellsc   1 天前 via iPhone

出了 http 还有别的方式吗

pabupa

pabupa   1 天前

emmm……试试共享内存,功能肯定可以做到

CEBBCAT

CEBBCAT   1 天前 via Android

是不是就我一人儿没听懂?线程池一般不都是进程内部的吗?进程内部应该就是一个二进制吧,那还怎么跨语言调用呢? ddl/so ?

可以讲讲为什么这样设计吗?

no1xsyzy

no1xsyzy   23 小时 55 分钟前   ❤️ 1

为什么要用次线程调度形式实现线程池?
为什么要从 Python 调用 golang 跨语言?

为什么不用 asyncio 呢?

Jwyt

Jwyt   23 小时 48 分钟前

@song135711 io 密集型的,和语言速度关系不大。就像 5 楼说的直接 python 请求就好了

wellsc

wellsc   23 小时 48 分钟前

@song135711 跟 io 密集型有啥关系?跨语言调用除了 http 还有别的更优解吗

youngce

youngce   23 小时 14 分钟前

槽点有点多,“goroutine 实现的线程池“ 不应该是协程池吗?

话说回来,假如你用 python 去调 golang,中间走 http 协议,怎么说也要花费个 20ms,python 的 CPU 性能再怎么拉胯也比多一次网络 IO 强吧

est

est   23 小时 11 分钟前

goroutine 是 golang 专有的吧。py 怎么个调法?

LeeReamond

LeeReamond   23 小时 0 分钟前

@wellsc 老哥你回了两层了还没搞清楚状况吗...老哥在哪里高就?

wellsc

wellsc   22 小时 59 分钟前

@LeeReamond 来,键盘给你,你来说说你怎么理解的。楼主 Python 想要调用 golang 的 goroutine 用 Http 有什么问题?

Jwyt

Jwyt   19 小时 59 分钟前

@wellsc 因为本质就是做一些 http 请求,直接用 python 请求就好了,何必用 python 调 golang

wellsc

wellsc   19 小时 56 分钟前

@Jwyt 楼主也没说背景啊,就说了需求,顺着楼主的思路解决有问题吗,不然还要去猜背景?

learningman

learningman   19 小时 49 分钟前 via Android

@wellsc 因为见过太多 XYZ 问题了

wellsc

wellsc   19 小时 44 分钟前

@learningman 所以说你知道 x 问题是啥吗?

Jwyt

Jwyt   19 小时 25 分钟前

@wellsc 做 http 请求能有啥背景?顺着楼主的思路解决,楼主的思路就是多此一举呀

Vegetable

Vegetable   19 小时 20 分钟前

从中午到现在,这个帖子我一直在关注,可惜到现在也没搞清楚楼主想干啥

你是想通过.so 在 py 里使用 go 编写的代码?还是想在 python 通过 http 调用 go 实现 RPC ?

Trim21

Trim21   19 小时 16 分钟前 via Android

我来猜测一下,楼主是不是要用一段 golang 代码来处理请求,但是又不会写 golang ?

dreampuf

dreampuf   19 小时 11 分钟前

可行,问题是从哪里开始,由 Golang serve HTTP listen 还是 Python?
如果是前者可以考虑 Python embedded Golang 的实现,参考 https://github.com/a-tal/httpy
如果是后者,可以在标准的 Python Webservice 之后将 request/response 的 fd 转给 golang 参考 https://github.com/vladimirvivien/go-cshared-examples

但是无论如何,就你提到的都是 IO 密集型任务,最终都会被转嫁成为 IO 更密集型任务。
你这个问题背后可能是对于 GIL 的不满,或者是觉得 Complied language 的灵活度的抱怨。这些都可以拆分成更细的领域去解决。当然直接混合两个运行时环境除了 ROI 不高,也没有什么问题。

keepeye

keepeye   19 小时 3 分钟前

你这应该用 grpc 或者 mq 实现

Deeymmm

Deeymmm   13 小时 24 分钟前   ❤️ 1

先学语文再学代码

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK