V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  ClericPy  ›  全部回复第 66 页 / 共 134 页
回复总数  2663
1 ... 62  63  64  65  66  67  68  69  70  71 ... 134  
最近看多了水帖, 见到楼主逻辑这么清晰, 文字简练信息量大的主题居然还有点不习惯

美国现在是不是风向有点乱, 要不先等大选...? 疫情期间就业情形确实见仁见智还是慎重考虑一下, 一般成绩尚可的, 读个硕做点研究还算不错的选择, 不只是延缓就业, 可能找到自己喜欢的方向也会减掉迷茫

既然想落户上海, 就先不要着急确定工作, 对大多数人来说第一份工作对未来影响还是很大的. 几个建议就是, 你这种背景, 刚毕业不要走外包也不要盲目创业, 有华为 offer 继续找大厂问题不大, 找工作很多时候反而看的是运气, 现在的情形不好就沉住气继续找, 莽撞选择要不得
2020-08-08 19:03:25 +08:00
回复了 Te11UA 创建的主题 Python 多线程与协程爬虫有很大区别吗?多线程转协程能优化多少?
看到有几个回复挺反常识的, 提醒几个 Python 并发编程的常识问题吧

1. 线程开的越多, 执行起来就越快吗?

并不会.

一方面, 线程开太多, CPU 切换的成本会变高, 也就相对降低了 CPU 利用率, CPU 很多时间浪费在调度上而不是计算上. 有关怎么切换的, 可以随处找找 GIL 的文章, 不过还是不建议自己修改对应参数 setswitchinterval (旧版本的 setcheckinterval )
另一方面, 对爬虫来说, 如果连接速度靠谱的话, 有可能一个线程就跑满了带宽, 那开多线程除了让所有任务一起抢资源, 并不会降低总时长, 也就是常见场景: 为什么我开 5 线程比开 100 线程还快(或者差不多). 与普通程序不同, 爬虫程序传输数据一方面看你的带宽, 另一方面还特别看重目标服务器的负载能力.

2. 有一个比较合理的并发数量吗?

参考:
Python3 里面 ThreadPoolExecutor 的 max_workers 默认值是 (os.cpu_count() or 1) * 5
可以根据带宽使用率适当调整这个数值.
(另: 多进程 ProcessPoolExecutor 默认 max_workers 就是 os.cpu_count() or 1)


3. 不计带宽和 CPU 能力的情况下, 是不是线程开的越多, 速度越快?

也不完全是.

拿 Requests 库来举例, 它的 Session 默认连接池大小取决于 HTTPAdapter 对象的 pool_connections, 这个默认值 DEFAULT_POOLSIZE = 10
简单的说, 如果不修改 HTTPAdapter 连接池的大小, 那可能瓶颈基本限定在这里了. 至于有些人选择不用 Session 复用连接, 我举个例子算了: 之前抓某东的某数据, 复用连接的情况下速度比每次新建连接大概快了十几倍.

4. 是不是用协程就比线程快, 节省 CPU?

不一定.

协程提高的是 CPU 效率, 遇到高并发的抓取, 你会发现协程 CPU 一直 100%, 因为它真的很忙, 而多线程反而可能在 80~100% 波动. 至于速度, 简单的提个例子, falcon 那是相当擅长 Benchmark.

协程中最使我受益的并不是性能, 而是它属于随时可以 Cancel 的, 一个已经执行的线程, 想在外部杀死它简直太费劲了.
好久以前还看到有人在这里吐槽 Python 没有尾递归优化
2020-08-06 21:31:35 +08:00
回复了 s609926202 创建的主题 Linux 如果实现每隔 5 分钟,且仅在白天运行的定时器?
@ochatokori 原生用 systemd 还好, cron 一开始用的舒服, 后来被同事东一块西一块还没注释的 cron 给玩死了... 虽然我上份工作用 supervisord + plan(Python 库, 定制 crontab 任务的) 做的通用脚本调度也能玩死不少交接的...

一两个任务, 服务器少的时候, crontab 用着还好, 但是考虑极限情况: 多账户, 多机器, 几百个任务... 这不叫运维了, 这叫防离职黑魔法
2020-08-06 21:25:13 +08:00
回复了 Te11UA 创建的主题 Python 多线程与协程爬虫有很大区别吗?多线程转协程能优化多少?
Talk is cheap, 试试就知道了

直接说结论:

1. 本次测试不记带宽发送本地端口的请求, 本地 server 使用 golang 默认的 net/http 简单实现的

2. 对比 httpx 协程和 requests 多线程, 二者都使用连接池复用连接. 前者比后者快了大概 20%(虽然后者被我负优化了...), 启用 uvloop 以后也没拉开太大差距.

3. 对比 aiohttp 和 requests, 不使用 uvloop 的时候前者是后者 3 倍, 开了 uvloop 大概 3068 qps, 是后者的 3.15 倍, 而 golang 内置的 net/http 测试也才 3300. 虽然很大因素是 aiohttp 内核很多地方使用 Cython 实现的...

4. 对比 windows vs linux, 前者是游戏本所以多核(但是只能用一个...), 后者在阿里云服务器上虽然单 CPU 但是有 uvloop 加成, 速度提高一倍

部分代码: https://github.com/ClericPy/torequests#benchmarks


一句话总结, 以上测试纯属娱乐不作数, 真想用快的, 就选 aiohttp 就好了

之前貌似还看到, 裸 uvloop 单核情况下和 golang 差不多
2020-08-05 23:35:12 +08:00
回复了 s609926202 创建的主题 Linux 如果实现每隔 5 分钟,且仅在白天运行的定时器?
@s609926202 我就随口一问, 因为见过超过十次了... 在想是不是新的流行说法

反正定时任务尽量还是别用原生 crontab 了, 找个靠谱点的调度后台算了, 最近也在调研处理定时任务流的, 在 azkaban 和 airflow 里面转悠
2020-08-05 22:38:52 +08:00
回复了 s609926202 创建的主题 Linux 如果实现每隔 5 分钟,且仅在白天运行的定时器?
crontab 支持时间段的, 以前用 python 库 plan 处理过批量调度的事情. 虽然现在已经是 systemd 的时代了

问个题外话: 现在是不是特别流行用"如果"代替"如何"
2020-08-01 14:35:33 +08:00
回复了 lixuda 创建的主题 Python 为什么 Python peewee 第一次运行时间很长
PySnooper 看看?

有点怀疑连接池惰性初始化
2020-07-25 12:27:23 +08:00
回复了 limyel 创建的主题 Python 异步是 Python web 的未来吗
爱用什么用什么, 协程给我最大的帮助就是再也没有阻塞的地方, 而且任何任务都可以无痛 cancel, 如果用多线程, 想杀它难的要死

现在我基本只用 Fastapi 了, 但是看面试还是 Python3 没用过协程的占多数, 所以主流应该还是老一套, ASGI 正在变好, 绝大多数库也都有了协程替代品, 早学早享受
2020-07-20 22:53:21 +08:00
回复了 KunMinX 创建的主题 问与答 dogedoge 不能使用了
@KunMinX 这年头除了 Google 别的哪个还叫搜索引擎... 以前没得选, 现在不用选了
2020-07-20 21:29:23 +08:00
回复了 KunMinX 创建的主题 问与答 dogedoge 不能使用了
手机上会跳
电脑上会重定向一次回到 doge

反正用了大半年了, 该换新的了
2020-07-20 21:28:11 +08:00
回复了 netnr 创建的主题 编程 吐槽一下这屎一样的代码
楼主怕是没见过真屎吧... 我就曾经写过, 一个函数两百多行, 我自己都不知道自己在写什么了, 然后又加了一百多行日志进去
2020-07-19 23:34:14 +08:00
回复了 domosekai 创建的主题 问与答 国家级证书进行强制 MITM 有可能吗?
突然就想起那个带 QQ 号的新闻了, 虽然不知道为啥想起来的...
2020-07-19 23:30:48 +08:00
回复了 byzf 创建的主题 生活 站里做个人项目的挺多的,说点有的没的,顺便劝劝退
提出自己的看法, 说出自己的经验是挺好的, 只是劝退什么的... 如果不是真心喜爱和生活所迫, 谁会主动选这行啊...
2020-07-19 23:27:45 +08:00
回复了 lamSakura 创建的主题 问与答 大学买电脑 让爸妈出钱好吗
上学时候家里一直极力反对我去打零工, 虽然家境也不富裕, 但是生活费还不至于短缺, 反正就是说上个大学不容易(家里没大学生), 别把时间浪费在社会实践上(个别专业除外), 多学点东西更有利于将来找工作

毕业以后觉得确实挺有道理的, 就是可惜当初在学校学的东西还是不够, 不过至少自学了编程毕业后找到了对应的工作
2020-07-19 23:23:26 +08:00
回复了 cmlz 创建的主题 分享发现 爱奇艺抢钱,真 TM 不要脸。
本来看到标题脑子里跑过去的是杀手之王里那句: 错, 比抢容易

点进来发现大部分人还是冷静的, 想从那些互联网营销鬼才们的手里占便宜, 还是尽量先看看别的帖子再下手吧(之前就是看 V2EX 帖子搞定的 89*3 年的阿里云和 79*2 年的京东爱奇艺, 也跟着指示关了自动续费), 或者就别寄希望占什么小便宜了, 真的心太累, 当学生的时候挺关注这些, 毕业以后就不再搞什么五福抢红包什么的东西了

其实这几年那几个老牌视频网站看起来也不大容易, 用尽浑身解数去谋生存, 真的是大开眼界

大家都冷静点, 还半小时周末就过完了, 早点休息吧
2020-07-15 22:42:32 +08:00
回复了 maryshaw 创建的主题 Go 编程语言 最近在看 Golang,为什么觉得和 javascript 语法那么像?
C-LIKE languages 多的很...
2020-07-15 22:14:57 +08:00
回复了 lovecy 创建的主题 程序员 大家都是用什么工具或方法,记录日常待办、备忘等?
用了 4 年半 todoist, 绑定 谷歌 日历加上 chrome 提醒插件以后很舒服

最近换了微软 Todo, 然后... 几乎再也没怎么看过 GTD 工具, 因为工作饱和了
2020-07-12 14:10:40 +08:00
回复了 whoisix 创建的主题 职场话题 新公司加班文化,是留下来学习还是选择离开
@whoisix 仔细看了下, 技术部没你们那么多人... 你比我好点, 虽然也是莫名加班, 管理较乱没什么时间观念
1 ... 62  63  64  65  66  67  68  69  70  71 ... 134  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1805 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 52ms · UTC 05:54 · PVG 13:54 · LAX 21:54 · JFK 00:54
Developed with CodeLauncher
♥ Do have faith in what you're doing.