我有一个执行 IO/计算的函数。我做了一个演示函数,它从这里复制到那里~300MB。如果我在一个我立即加入的线程中运行它,它比我在没有线程的情况下运行它要慢得多。我检查了:
def cp
start = Time.now
FileUtils.cp_r("C:/tmp", "C:/tmp1")
fin = Time.now - start
p fin
end
比较这些:
cp
Thread.new{cp}.join
第一次cp
调用总是比线程调用快两到四倍。如果我这样做也会发生同样的情况
cp
Thread.new{cp}
sleep 200
我听说过 GIL 等,但在这里,一次只运行一个线程,因此没有运行时间竞赛。关于如何使其更快或为什么会发生这种情况的任何想法?