我发现pip在编译包时只使用单核.由于一些python包需要一些时间来构建使用pip,我想在机器上使用多核.使用Makefile时,我可以像下面这样执行命令:
make -j4
我怎么能为pip做同样的事情?
解决这个问题的最终方法
因为所有的c/cpp文件都是使用make
commend 编译的,并且make
有一个选项可以指定使用多少cpu核来编译源代码,我们可以做一些技巧make
.
备份原始make
命令:
sudo cp /usr/bin/make /usr/bin/make.bak
写一个"假" make
命令,它将附加--jobs=6
到其参数列表并将它们传递给原始的make命令make.bak
:
make.bak --jobs=6 $@
所以在那之后,甚至不用c libs编译python,而且其他包含c libs的人将加速编译6个核心.实际上,使用make
命令编译的所有文件都会加速.
还有祝你好运.
使用: - install-option =" - jobs = 6".
pip3 install --install-option="--jobs=6" PyXXX
我有同样的要求,使用pip install来加快编译进度.我的目标pkg是PySide.起初我使用pip3 install pyside
,它需要将近30分钟(AMD 1055T 6核,10G RAM),只有一个核心需要100%负载.
没有线索pip3 --help
,但我找到了很多选项pip install -u pyXXX
,但我不知道'-u'是什么,这个参数也没有pip --help
.我试过'pip3 install --help',得到了答案:- install -option.
我阅读了PySide代码的代码并找到了另一条线索:OPTION_JOBS = has_option('jobs')
我把ipdb.set_trace()放在那里,最后了解如何使用pip install来编译多核.
我花了大约6分钟.
--------------------------更新----------------------- -------
如下面的评论,我最终使用了这样的技巧:
cd /usr/bin
sudo mv make make.bak
touch make
然后编辑make:vim make
或者你喜欢的其他方式并输入:
make.bak --jobs=6 $*
我不熟悉bash,所以我不确定这是否是纠正bash代码.我在windows中写这个评论.关键是将make重命名为make.bak,然后创建一个新的make,使用这个新的make来调用make.bak并添加param --jobs = 6