加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby可以一次运行的线程数量有限吗?

发布时间:2020-12-16 22:12:08 所属栏目:百科 来源:网络整理
导读:如果不是最大值还是有效的? 我正在创建14个线程,每个线程打开一个URL列表(约500个)为每个线程创建一个新的线程,然后将其下载,并将其添加到MySQL数据库. MySQL池大小设置为50. 这是RoR中的耙子任务. 这样会使用Kernal#fork或其他方法更好吗? 解决方法 那么,
如果不是最大值还是有效的?

我正在创建14个线程,每个线程打开一个URL列表(约500个)为每个线程创建一个新的线程,然后将其下载,并将其添加到MySQL数据库. MySQL池大小设置为50.

这是RoR中的耙子任务.

这样会使用Kernal#fork或其他方法更好吗?

解决方法

那么,由于你的线程将是IO绑定,所以好消息是,Ruby 1.8和1.9线程都可以实现. Ruby 1.8使用“用户空间线程”,这意味着在Ruby中创建新线程时不会创建真正的新操作系统线程.这对于CPU多任务是不利的,因为一次只有一个Ruby线程正在运行,但对于IO多任务是有好处的. Ruby 1.9使用真正的线程,并且对于这两者都是有好处的.

您可以创建的线程数确实取决于您的系统.当然有实际的限制,但是你可能不想在任何地方附近.首先,除非您下载的服务器速度非常慢,而且连接速度非常快,否则只有几个线程会使您的Internet连接饱和.另外,如果你从一个服务器上抓取了很多页面,那么从500个线程一次就可以一次抛出500个请求也不会有什么好处的.

我会开始很小:10或20个线程一次运行.根据服务器负载,带宽等增加或减少.还有与MySQL数据库并发连接的问题.根据您的表的设置以及它们的大小,尝试在同一时间插入太多的数据将无法正常工作.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读