1. python开发小笔记
本文件记录一些实用的python小知识,会一直更新
1. import路径
1.1 python的import搜索路径可以用sys.path查看:
import sys
print(sys.path)
1.2 python的搜索目录有:
- 本脚本所在目录
- 环境变量PYTHONPATH指定的目录
- 标准库目录,通常在/usr/lib/python3*.zip 和 /usr/lib/python3.* 和 /usr/lib/python3.*/lib-dynload
- 安装目录下.pth文件指定的路径
- 第三方库目录
1.3 为import指定目录
- sys.path.appen("my/lib/path") #直接修改sys.path,在末尾增加
- sys.path.insert(0,"my/lib/path) #同上,只是这里是插入
- os.environ['PYTHONPATH'] += "my/lib/path" #修改环境变量,需要import os
2. 多线程模块threading
2.1 示例
import threading
import timedef my_thread_fun():for i in range(1000):print("my-thread:",i)time.sleep(1)def main():thread = threading.Thread(target=my_thread_fun)thread.start()for i in range(1000):print("main:",i)time.sleep(1)main()
2.2 创建一个新的线程主要是threading.Thread方法,线程函数由参数target指定,参数daemon默认为False,它表示就算主线程结束了,它也要等待分线程结束,整个程序才能结束;当daemon被指定为True时,当主线程结束,分线程也会立即结束:
thread.Thread(target=my_thread_fun, daemon=True)
2.3 Thread方法中的name成员可以指定线程的名字,可以通过threading.current_thread().name获取本线程的名字:
thread.Thread(target=my_thread_fun, name="my thread")
在my_thread_fun中,可以这样显示本线程名字:
...
def my_thread_fun():...print(threading.current_thread().name + ':' + i)
2.4 判断线程是否结束,使用方法is_alive:
thread = threading.Thread(target=my_thread_fun)
thread.start()
...
if not thread.is_alive():print("my thread complete.")...
2.5 阻塞线程执行,使用方法join():
- thread.join() 一直阻塞
- thread.join(1.0) 阻塞1秒