一开始,项目中要求需要安装这几个包,我以为是独立的,所以独立安装了。没想到只能安装torch-geometric,其他的都是报错,无论是使用pip安装还是conda安装,十分无语。
pip失败:

conda失败:

原因 这些包不是独立的,其中torch-geometric是老大。
在https://pytorch-geometric.com/whl/index.html中,我们顺着随便一个自己的torch版本进去。

上面那个cu是cuda的意思,102就是cuda10.2的意思,同理111是11.1。
发现可以找到如下4个包:


也就是说:我们需要先安装那4个,然后再安装torch-geometric。
安装下面的第一个命令(请注意,命令可能已过时,但请稍后编写如何查找命令)
[En]
Install the first one below (note that commands may be out of date, but later write how to find commands)
conda install pytorch-sparse -c rusty1s
这里一次性解决了两个。

不过提醒一下哈,即使都是用conda,命令也特别多,上面只是我成功了的一种。比如:https://anaconda.org/esri/torch-sparse

但是我发现这个库,esri,没有更新,只支持pytorch1.8,我的是1.9。所以没有用这个命令。不知道-c意思的,可以查看我以前的博客,https://blog.csdn.net/qq_43391414/article/details/115069247。
也就是说上面一个是老版的torch-sparse,一个是新版的,那怎么知道呢?
打开https://anaconda.org/,搜索torch-sparse。


发现我们是对的,第一个总是最好的,这说明那个人很勤奋地维护着这个包。点击,我们就会知道下载顺序是什么。
[En]
Found that we are right, the first is always the best, which shows that that person is diligent in maintaining this bag. Click in, and we will know what the download order is.

同样,还有两个信息包,我们按如下方式进行搜索:
[En]
By the same token, there are two more packets, and we search like this:



我们发现这个老板还在维护,我们还在下载。出于同样的原因,也就是最后一个。
[En]
We found that this boss is still maintaining it, and we still download it. By the same token, the last one.

终于来找老板了,我们用:
[En]
Finally came to the boss, we use:

最终,所有都成功了。至于pip怎么安装我可不管哈,反正应该更加复杂,但是更加灵活,我上面展示的是conda安装。
导入成功:

Original: https://blog.csdn.net/qq_43391414/article/details/120201809
Author: 音程
Title: pip 或者conda 下载安装torch-{cluster,geometric,scatter,sparse,spline-conv}的时候报错
相关阅读
Title: 面试题之Redis是否支持事务
联想软开暑期实习 一面
一、问题
刚说了MySQL事务,说一下Redis是否支持ACID
我:balabal….
面试官:中间原子性说错了
注:以下为一些不太完整的总结。
二、Redis事务
1、事务ACID
事务是一系列严密的逻辑操作,可以使一条SQL语句也可以是一组,是恢复和并发控制的基本单元。
ACID指一致性,原子性,隔离性,持久性。
原子性:事务中的多个操作必须度完成,或者都不完成。
一致性:数据库中的数据在事务执行前后状态是一致的。
隔离性:数据库执行该事务的时候,不受其他事务影响。
持久性:事务对数据的修改持久化保存。
其中在MySQL中一致性是最终追求的目标,隔离性由锁机制实现,原子性和持久性由redolog和undolog保证。
2、Redis如何实现事务
Redis通过命令开启和提交事务,和命令队列的形式支持事务
- MULTI开启事务。
- 提交redis数据操作命令到命令队列中,不会立即执行。
- EXEC提交事务,实际执行队列中的命令。
3、Redis事务机制保证哪些属性
(1)原子性:
- 第一种情况,执行EXEC命令前,客户端发送的命令本身有错误,比如语法问题或者本身命令不存在,这些命令入队就检测出来错误。后续即使添加正确命令,执行EXEC命令提交事务也会失败。保证原子性。
- 第二种情况,错误命令入队redis未检查出来,比如命令和操作数据不符,这是会把正确命令执行完,错误命令无法执行,因而命令队列中的所有命令只执行了一部分事务无法保证原子性。同样在命令入队之后,如果发现命令有错,提供DISCARD命令可以 主动放弃事务执行, 清空命令队列。
- 第三种情况,执行EXEC命令,redis故障,导致执行失败。如果开启了AOF日志记录命令,就可以恢复并不执行事务操作,保持原子性,如果未开启日志,则无法保证。
也就是说:
- 如果命令入队就报错,会放弃事务,保证原子性
- 如果命令入队没报错,实际执行报错,不保证原子性
- EXEC命令执行时候故障,如果开启了AOF日志,则保证原子性
(2)一致性:
- 命令入队就报错,事务会被放弃,保持一致性
- 执行才报错,错误的命令不执行,正确的命令执行,也保证一致性
- 执行EXEC命令redis发生故障。如果记录了日志,可以清除事务操作,如果没记录日志,那么就可以恢复到事务执行前的状态,也是保持一致性。
(3)隔离性
分两种情况:
- 并发操作在EXEC命令执行前,要使用WATCH机制保证隔离性,否则无法保证。
- 并发操作在EXEC后,可以保证
WATCH机制可以再事务执行前监控一个或者多个键的值变化情况,如果执行EXEC事务,WATCH机制会检查监控的键是否被其他客户端修改了,就放弃事务,避免被破坏隔离性。

如果没有WATCH机制,可能直接开启事务的命令读取的数据,在事务未提交之前,其他事务可能就修改该数据,提交事务读取的数据不一致了。
(4)持久性
无论是哪种持久化模式,由于内存数据库和断电的原因,修改后的数据持久化属性是无法保证的。
[En]
No matter what the persistence mode is, due to the in-memory database and power outage, there is no guarantee for the modified data persistence properties.
4、总结
4个命令支持事务

redis事务机制可以保证一致性和隔离性,无法保证持久性,但是对于redis而言,本身是内存数据库,所以持久化不是必须属性。
原子性需要自己进行检查,尽可能保证。
Original: https://www.cnblogs.com/welan/p/16320513.html
Author: weilanhanf
Title: 面试题之Redis是否支持事务
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/333684/
转载文章受原作者版权保护。转载请注明原作者出处!