python3安装虚拟环境
#1.安装虚拟环境 pip3 install virtualenv #2.创建虚拟环境 python3 -m venv venv #或者 python3 -m venv . #3.激活虚拟环境 在开始工作前,先要激活相应的虚拟环境: . venv/bin/activate 在 Windows 下: venv\Scripts\activate #激活后,你的终端提示符会显示虚拟环境的名称。
使用freeze 给所有模块搬家
# 导出安装模块的文档 pip freeze > my_freeze.txt # 或者指定地址 pip freeze > e:\my_freeze.txt # 在另一个环境下,安装该文档里的模块 pip install -r my_freeze.txt
可能遇到的问题以及解决方法
Python多线程死锁问题
死锁的原理非常简单,可以用一句话来描述。当多个线程访问多个锁时,不同的线程持有不同的锁。它们正在等待其他线程释放锁,因此陷入永久等待。例如,如果线程a持有1号锁并等待2号锁,而线程B持有2号锁并等待1号锁,则它们永远不会等待执行日期,这称为死锁。
关于僵局有一个著名的问题,叫做哲学家的进餐问题。有五个哲学家围坐在一起,他们每人需要两个叉子吃东西。如果他们同时拿起左手边的叉子,他们会一直等待右侧的叉子松开。这样,他们就被困在永远的等待中,所有这些哲学家都会饿死。
这是一个非常生动的模型,因为在计算机并发场景中,某些资源的数量往往是有限的。很可能是多个线程抢占。如果处理不当,每个人都会获得一个资源,然后等待另一个资源。
解决死锁问题的方法很多。这里我们介绍一个相对简单的方法,即对这些锁进行编号。当一个线程需要同时持有多个锁时,它必须按升序访问这些锁。我们可以用上下文管理器很容易地做到这一点。
对于死锁,排序锁只是解决方法之一。另外,解决死锁的模型也很多。例如,我们可以让线程在无法持有新锁时放弃所有现有锁。例如,我们可以建立一个机制来检测死锁的发生并进行处理。事实上,有很多方法可以使分歧。这些方法的原理是不同的。它们涉及大量操作系统的基本概念和知识。学生对锁具的操作系统有兴趣和深入的了解。