新手问题,求教 ruby 并行

2020-03-08 19:03:31 +08:00
 crella

背景是提高爬虫的速度。

代码里分别用了 Parallel 和普通多线程(Thread)的办法,这两个办法的打印结果见文件尾部注释

https://gitee.com/crella/rubycode/blob/master/help_mutithread.rb

问题:1、从 Parallel 方法的打印结果来看,这算是并行成功吗?因为好像 windows 上的 ruby 不支持 fork,所以 Parallel 可能无法利用多核。

2、我觉得这里的场景用不到 async,但是如果用 async 写,怎么传参数给用了 async 的函数?就是怎样用 async 来实现多线程 分别 下载指定页数的 html 的功能?

ruby async 的文档在: https://github.com/socketry/async

吐槽: 经常看不懂 ruby 的 proc

652 次点击
所在节点    问与答
2 条回复
agagega
2020-03-10 20:17:40 +08:00
Ruby 的 Thread 目测是不能真实多核的,只能提高 IO 效率
crella
2020-03-11 20:37:02 +08:00
@agagega 这个问题我知道,就像隔壁经常吵的 gil 一样。

我只是想学一下 ruby 的 async 怎么用,没搞懂而已。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/650979

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX