创建conda环境:
conda create --name <env_name>
其中,<env_name> 是想要给虚拟环境起的名称。可以将其替换为想要的任何名称。
接下来操作均需先激活指定的虚拟环境,然后才能在指定环境中安装包
使用conda安装配置文件里的包:
environment.yml文件
conda env update -f environment.yml --prune
这将根据environment.yml文件中列出的包和依赖项更新当前激活环境的配置。–prune选项将删除环境中没有在environment.yml文件中列出的包的任何不需要的包。
注:若".yml"文件中有name这个属性,它会重新创建一个对应的虚拟环境,并在创建的虚拟环境中安装下面的依赖包
使用pip安装配置文件里的包:
requirements.txt文件
pip install -r requirements.txt
这将读取requirements.txt文件,并自动安装其中列出的所有包及其依赖项。
如果requirements.txt文件中有指定包的版本限制,pip将会安装符合指定版本要求的最新版本。
Pycharm中虚拟环境问题
当在Pycharm中使用pip命令安装所需依赖时,由于Pycharm默认是全局安装,所以使用pip命令安装后,代码中仍然会显示该依赖并未安装,一个可行的解决办法为:
在Pycharm终端中,输入: "cd venv/Scripts",回车,再输入"activate + 回车",此时应该是激活了当前项目的虚拟环境,之后再安装依赖就会安装在该项目的venv/Lib/site-package目录下。
删除某个已存在的虚拟环境:
conda env remove --name <env_name>
<env_name> 是虚拟环境的名称
导出环境配置文件
如果你想导出你的conda环境到一个environment.yaml文件,可以使用下面的命令:
conda env export > environment.yaml
这条命令将把你当前的conda环境中的所有包导出到一个名为environment.yaml的文件中。
如果你希望只导出你通过pip安装的包到一个requirements.txt文件,你可以使用下面的命令:
pip freeze > requirements.txt
这条命令将把你当前环境中所有通过pip安装的包导出到一个名为requirements.txt的文件中。
请注意,conda env export会导出环境中所有的包(包括通过conda和pip安装的包),而pip freeze只会导出通过pip安装的包。
查看当前存在的任务进程
ps aux
查看当前CUDA版本
nvcc --version
查看当前CUDA状态
nvidia-smi
判断GPU是否可用
### Check if GPU is available ###
if torch.cuda.is_available():
device = torch.device('cuda')
print("GPU")
else:
device = torch.device('cpu')
print("CPU")
nohup命令的使用
nohup python train_seg.py '../data/comparatives/string_c1/seqs.pkl.gz' '../data/comparatives/string_c1/train_pairs.pkl.gz' > records/train_seg.txt &
这段命令的含义是:
- ‘nohup’:表示不挂断地运行命令,即使终端关闭或断开连接,命令也会继续运行。
- ‘python train_seg.py’:运行名为 train_seg.py 的 Python 脚本。
- ‘…/data/comparatives/string_c1/seqs.pkl.gz’:作为 SEQ_PATH参数传递给脚本的路径,指定序列文件的位置。
- ‘…/data/comparatives/string_c1/train_pairs.pkl.gz’:作为 TRAIN_PATH参数传递给脚本的路径,指定训练数据文件的位置。
- ‘>’:重定向输出到文件。
- ‘records/train_seg.txt’:指定输出的文件路径,将命令的标准输出重定向到records/train_seg.txt 文件中。
- ‘&’:表示在后台运行命令,并立即返回到终端提示符,不会阻塞终端。
通过添加 & 符号,该命令将以后台进程的形式运行,不会阻塞当前终端,可以继续执行其他命令或关闭终端而不影响脚本的执行。同时,命令的标准输出会被重定向到 records/train_seg.txt 文件中,用于记录训练过程的输出和日志信息。
Q:nohup和&符号作用是一样的吗?
A:不完全一样。
nohup 和 & 符号都可以用于在后台运行命令,但它们的作用有一些区别:
- nohup:nohup 命令用于在后台运行命令,并将命令的输出重定向到指定文件,即使终端关闭或断开连接,命令也会继续运行。使用 nohup
命令可以确保命令在后台运行的同时,不会受到终端关闭的影响,并将输出保存到指定文件中。
- & 符号:& 符号用于在后台运行命令,并立即返回到终端提示符,不会阻塞终端。通过在命令的末尾添加 &
符号,可以将命令放在后台运行,继续使用终端执行其他命令,而不必等待该命令的完成。
因此,nohup 命令和 & 符号在将命令放在后台运行方面有相似的作用,但 nohup 命令还会将命令的输出重定向到指定文件,以保证输出的记录。
Q:kill pid 与kill -9 pid命令的区别是什么?
A:kill pid 发送 SIGTERM 信号,允许进程进行清理操作,例如保存数据、关闭文件等。进程可以捕获 SIGTERM 信号并执行相应的操作,
然后正常退出。而 kill -9 pid 发送 SIGKILL 信号,进程无法捕获该信号或进行任何清理操作,它会被立即终止。
- 强制终止:kill -9 pid 是一个强制终止命令,它可以终止无响应或僵尸进程,但也可能导致进程未能正确地释放资源或保存数据。
- 优雅终止:kill pid 提供了一种优雅的终止方式,允许进程完成必要的清理操作,避免数据丢失或资源泄漏。
在大多数情况下,首选应该是使用 kill pid 命令,以允许进程进行清理操作并正常退出。只有在出现无响应或其他无法通过正常方式终止的
情况下,才应该考虑使用 kill -9 pid 命令。但请注意,使用 kill -9 命令时要谨慎,因为它可能会导致未处理的资源问题或数据损失。
个人存档,随时更新