Ruby 在这种情况下我应该使用多线程吗?[红宝石]

Ruby 在这种情况下我应该使用多线程吗?[红宝石],ruby,multithreading,Ruby,Multithreading,我正在打开多个文件并处理它们,一次一行。这些文件包含分隔数据的标记,因此,有时一个文件的处理可能需要等待其他文件赶上相同的标记 我一开始只使用一个线程和一个数组来执行此操作,该数组用true/false指示文件是否应该在当前迭代中读取,或者是否应该等待其他一些线程的响应 使用线程会使这更简单吗?更有效率?Ruby有这样的机制吗?首先,线程从来不会让事情变得更简单。线程仅适用于帮助加速应用程序。线程化带来了许多新的复杂性,能够描述多线程执行似乎很方便,但它总是让生活变得更艰难 其次,过早优化是万恶

我正在打开多个文件并处理它们,一次一行。这些文件包含分隔数据的标记,因此,有时一个文件的处理可能需要等待其他文件赶上相同的标记

我一开始只使用一个线程和一个数组来执行此操作,该数组用true/false指示文件是否应该在当前迭代中读取,或者是否应该等待其他一些线程的响应

使用线程会使这更简单吗?更有效率?Ruby有这样的机制吗?

首先,线程从来不会让事情变得更简单。线程仅适用于帮助加速应用程序。线程化带来了许多新的复杂性,能够描述多线程执行似乎很方便,但它总是让生活变得更艰难

其次,过早优化是万恶之源。不要试图加快文件处理速度,除非您知道这是一个瓶颈。做可能有效的最简单的事情(但不简单)

第三,如果读取文件的过程是独立的,线程可能会有所帮助,这样线程就可以处理文件,而不必担心其他线程正在做什么。听起来你的情况并非如此。因为不同的线程必须相互通信,所以应用线程时不太可能看到速度优势


第四,我不了解Ruby,因此不能评论它有什么机制

我不确定在ruby中使用线程是否有益。最近,我编写并测试了一个应用程序,该应用程序本应进行并行计算,但即使在四核处理器上,我也没有得到我所期望的结果,它按顺序执行计算,一个线程接一个线程。读了这篇文章,它讨论了线程调度,结果可能是事情并没有改变,至少对于最初的ruby来说是这样