English 中文(简体)
使用多核心的 Pip 构建选项
原标题:Pip build option to use multicore

我发现 pip 仅在汇编软件包时使用单一核心。 由于某些 python 软件包需要一段时间才能使用 pip 构建, 我愿意在机器上使用多核。 如果使用 Makefile, 我也可以使用以下命令 :

make -j4

我怎样才能为Pip做到同样的事情呢?

最佳回答

据我所知 皮普似乎没有这种能力 但我可能搞错了

要在 Python 中使用多处理包进行多处理,[这里有一份我找到的指南] () 如何在您感兴趣的情况下进行多处理? 这是link 至谈论它的python docs。

我翻阅了 pip 源代码( 可用 < a href=" https:// github. com/ pypa/ pip" rel= " noreferrer" > here ), 寻找多处理软件包的引用, 找不到该软件包的任何用途 。 这意味着 pip 不使用/ 支持多处理 。 从我所知道的 < code>/ pip/ commands/ restall. py 文件, 也就是运行 < code> pip 安装 & lt; packageage> 时被调用的问题, 也是您感兴趣的问题之一。 对于这个文件, 具体来说, 进口是 。

from __future__ import absolute_import

import logging
import os
import tempfile
import shutil
import warnings

from pip.req import InstallRequirement, RequirementSet, parse_requirements
from pip.locations import virtualenv_no_global, distutils_scheme
from pip.basecommand import Command
from pip.index import PackageFinder
from pip.exceptions import (
    InstallationError, CommandError, PreviousBuildDirError,
)
from pip import cmdoptions
from pip.utils.deprecation import RemovedInPip7Warning, RemovedInPip8Warning

您可以看到,它没有提及多处理软件包,但我检查了所有其他文件,只是为了确定。

此外,我还检查了“https://pip.pypa.io/en/latest/ reference/pip_revention.html#usage' rel=“noreferrer'>p 安装文件,没有发现使用多个核心装置的参考文献。

TL;DR: Pip 不按你的要求行事。 我可能错了, 因为我没有看来源那么长时间, 但我很肯定它不支持它。

问题回答

解决此问题的“强”极极

由于所有c/cpp文件都将通过使用 make 推荐来汇编,而且 make 有一个选项可以指定有多少 cpu core cores shoulle 用于汇编源代码, 我们可以在 make 上玩一些把戏。

  1. 备份您的原始 make 命令 :

    sudo cp/usr/bin/ make/usr/bin/ make.bak

  2. 写入 makes 命令, 该命令将把 - jobs=6 附加到参数列表中, 并将其传送到原始命令 makes.bak :

    make. bak - jobs=6 $ /code>

因此, 在此之后, 即使是以 libs 编译 python, 也不必用 libs 编译 python, 但也有些包含 libs 。 实际上, 使用 < code > make 命令汇编的所有文件都会加速 。

祝你好运


使用: -安装-option="-jobs=6" (pip docs )。

pip3 install --install-option="--jobs=6" PyXXX

我也有同样的要求使用管道安装来加快编译进度。 我的目标 pkg 是 PySide 。 首先我使用 < code> pip3 安装 pyside , 需要近30分钟( AMD 1055T 6C, 10G RAM), 只有一颗核心能承受100%的负载 。

pip3 > --help 中没有任何线索,但我找到了许多选项,如 p安裝 -u pyXXX ,但我并不知道什么是 -u,这个参数也没有在 pip --help 中。我尝试了 pip3安裝 --help,结果答案是: < 坚固>-安装-option 。

我读了 PySide S 代码的代码, 找到了另一个线索 : < code> OPTION_ JOBS = has_ option( job) , 我将 ipdb. set_ trace () 放在那里, 最后明白了如何使用多核心来使用 pip 安装来编译 。

我花了大约6分钟。

- - - - - - - - - - - - - - - - - - -

as comment below, I finally used tricks like this: cd /usr/bin sudo mv make make.bak touch make then edit make: vim make or other way you like and type this: make.bak --jobs=6 $* I m not familiar with bash, so I m not sure if this is the correcct bash code. I m writing this comment in windows. The key is rename make into make.bak, and then create a new make, use this new make to call make.bak with added param --jobs=6

Tested this works https://stackoverflow.com/a/57014278/6147756

单项命令 :

MAKEFLAGS="-j$(nproc)" pip install xxx

启用脚本中的所有命令 :

export MAKEFLAGS="-j$(nproc)"

在一些共享的托管环境上,核心构建是有限的,因此 pip 安装 uwsgi 无法从源构建软件包。

CPUCOUNT=1 pip install uwsgi




相关问题
Can Django models use MySQL functions?

Is there a way to force Django models to pass a field to a MySQL function every time the model data is read or loaded? To clarify what I mean in SQL, I want the Django model to produce something like ...

An enterprise scheduler for python (like quartz)

I am looking for an enterprise tasks scheduler for python, like quartz is for Java. Requirements: Persistent: if the process restarts or the machine restarts, then all the jobs must stay there and ...

How to remove unique, then duplicate dictionaries in a list?

Given the following list that contains some duplicate and some unique dictionaries, what is the best method to remove unique dictionaries first, then reduce the duplicate dictionaries to single ...

What is suggested seed value to use with random.seed()?

Simple enough question: I m using python random module to generate random integers. I want to know what is the suggested value to use with the random.seed() function? Currently I am letting this ...

How can I make the PyDev editor selectively ignore errors?

I m using PyDev under Eclipse to write some Jython code. I ve got numerous instances where I need to do something like this: import com.work.project.component.client.Interface.ISubInterface as ...

How do I profile `paster serve` s startup time?

Python s paster serve app.ini is taking longer than I would like to be ready for the first request. I know how to profile requests with middleware, but how do I profile the initialization time? I ...

Pragmatically adding give-aways/freebies to an online store

Our business currently has an online store and recently we ve been offering free specials to our customers. Right now, we simply display the special and give the buyer a notice stating we will add the ...

Converting Dictionary to List? [duplicate]

I m trying to convert a Python dictionary into a Python list, in order to perform some calculations. #My dictionary dict = {} dict[ Capital ]="London" dict[ Food ]="Fish&Chips" dict[ 2012 ]="...

热门标签