Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python pip线程安全吗?_Python_Multithreading_Pip - Fatal编程技术网

Python pip线程安全吗?

Python pip线程安全吗?,python,multithreading,pip,Python,Multithreading,Pip,我有一个构建脚本(bash),它利用pythonpip从远程获取需求并将其放入虚拟环境。此构建脚本可以由另一个脚本调用,该脚本将使用任意数量的线程和不同的目标调用它。这会导致每次调用都重新运行pip。它将尝试检查相同虚拟环境的相同需求 这是否与pip不兼容?pip每次运行都会浪费带宽和资源。 在virtualenv中,已安装的软件包保持安装状态。因此,您可以在存储标志的目录中设置标志或文件,在检查标志时,您可以执行或不执行pip。这是一个更好的解决方案。根据,pip应该主要是线程安全的,除非存

我有一个构建脚本(bash),它利用python
pip
从远程获取需求并将其放入虚拟环境。此构建脚本可以由另一个脚本调用,该脚本将使用任意数量的线程和不同的目标调用它。这会导致每次调用都重新运行pip。它将尝试检查相同虚拟环境的相同需求


这是否与
pip
不兼容?

pip
每次运行都会浪费带宽和资源。

在virtualenv中,已安装的软件包保持安装状态。因此,您可以在存储标志的目录中设置标志或文件,在检查标志时,您可以执行或不执行
pip
。这是一个更好的解决方案。

根据,pip应该主要是线程安全的,除非存储库状态在更新时发生变化。

因为这是google上的第一次讨论:pip不应该被认为是线程安全的。另外,pip中存在一个bug,如果您没有在导入XT pip包的线程中运行
pip.main()
,那么从线程中调用pip时可能会导致异常

运行
pip.main()
也是不受支持的API。唯一推荐的方法是从
subprocess.Popen()
或类似程序调用pip

详情如下:

轮转
wheel
是否注意到了这一点?我不这么认为,每当我将pip与requirements.txt文件一起使用时,它都会手动检查所有软件包,它会首先重新下载文件,如果已经安装,则会退出。但是下载发生了。顺便说一句,这并不能回答我的问题。我需要了解线程安全。“存储库状态”是什么意思?@BourgondAries说你安装了一个包。对于第一个线程,包的版本是1.0,但随后包被更新,第二个线程看到版本1.1。这是极不可能的,但如果发生这种情况,可能会破坏一切。线程安全是二进制的。“大部分线程安全”意味着不是线程安全的。