使用一个配方制作多线程构建?

时间:2018-06-14 21:43:32

标签: multithreading makefile

如果我有以下内容

import pandas as pd

df = pd.DataFrame({'a': [1, 2, 3, 7], 'b': [1.0, 99.0, 20.0, 63.]})

criteria = df[df['b'] >= 60.0]

我用%.o: %.c gcc -c -o $@ $< 运行make,会做多线程构建吗?我已经阅读了-j的文档,并说它将并行运行多个配方。在我的例子中,似乎只有一个配方,但我不确定make是否会进行多线程构建。

2 个答案:

答案 0 :(得分:0)

是的,这是根据您传递给-j参数的作业数量运行的(例如,您机器上的处理器数加一个似乎是一个很好的值)。此规则很可能会消耗较大项目中的大部分构建时间,与-j1运行相比,您应该能够看到相当大的加速时间。

答案 1 :(得分:0)

这是一条规则,但它是模式规则。模式规则为make提供了一个“模板”,以便了解如何根据对应的.o文件更新任何.c文件。

因此,如果要从10个源文件构建10个目标文件,make会将此模式规则应用于每个文件规则以构建它。如果你使用-j10,那么make会并行调用所有的配方,因为它们不相互依赖。