首页
关于
Search
1
图神经网络
110 阅读
2
java期末速成
47 阅读
3
CLIP
42 阅读
4
Attention2Transformer
36 阅读
5
MySQL
32 阅读
默认分类
AI
课内
技能
Search
标签搜索
AI
CS
Tools
paper
DeepLearning
python
DATA
GNN
Transformer
hadoop
晨旭不想写程序
潜.
累计撰写
24
篇文章
累计收到
23
条评论
首页
栏目
默认分类
AI
课内
技能
页面
关于
搜索到
6
篇与
的结果
2024-06-02
threading多线程
threading在处理多并发问题时,我们通常使用多线程进行处理,Python 实现多线程编程需要借助于 threading 模块基本使用threading 模块中最核心的内容是 Thread 这个类每个对象都代表一个线程,平时我们直接运行的部分就是主线程Thread 的构造方法中,最重要的参数是 target我们使用target将线程的目标指定出来(一个函数)要让一个 Thread 对象启动,调用它的 start() 方法就可以了thread = threading.Thread(target=test,name='name') thread.start()threading.active_count表示目前已经运行了多少个线程threading.enumerate运行的线程有哪些threading.current_thread表示当前运行的线程是哪个join功能在start之后,在某处插入了.join(),则从此处开始至子线程中止都阻塞主线程,执行完当前任务后再继续进行主线程的任务Queue功能我们的线程无法得到返回值所以我们要使用的话我们就要先定义出一个队列def job(data,q): for i in range(len(data)): data[i] = data[i]**2 q.put(l) def multithreading(data): q = Queue() threads = [] data = [[1,2,3],[3,4,5],[4,4,4],[5,5,5]] for i in range(4): t = threading.Thread(target = job,args=(data[i],q)) t.start() threads.append(t) for thread in threads: thread.join() results = [] for _ in range(4): results.append(q.get())多线程的效率问题多线程的任务分配并不是平均分配使用GIL分配方式同一时间只有一个线程在进行,节省效率是因为读写可以与其他线程的运算同时进行LOCK锁的功能lock = threading.Lock() lock.acquire() |运行| lock.release()锁的意义就在于多个线程在对共享数据进行修改时,为了让数据同步做的锁定,让线程获得后进行即可详细查阅 http://www.runoob.com/python3/python3-multithreading.html
2024年06月02日
14 阅读
0 评论
0 点赞
1
2