python多线程
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python多线程,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1934字,纯文字阅读大概需要3分钟。
内容图文
![python多线程](/upload/InfoBanner/zyjiaocheng/830/bad5f71ba00744e8923777ba27365f0f.jpg)
1.什么是python GIL
全局解释器锁,Python中的一个线程对应于c语言的一个线程,gil使得同一个时刻只有一个线程在一个cpu上执行字节码,无法将多个线程映射到多个cpu上执行
2.创建线程的两种方式
#函数创建 import threading import time def get_url(t): print(t) time.sleep(2) def get_html(t): print(t) time.sleep(2) t1 = threading.Thread(target=get_url, args=('get_url',)) t2 = threading.Thread(target=get_html, args=('get_html',)) #设置线程随主线结束而结束 必须在start之前调用 t1.setDaemon(True) t2.setDaemon(True) #主线程等待子线程的结束而结束 t1.join() t2.join() print('线程结束') #类创建 import threading import time class GetUrl(threading.Thread): def run(self): print('geturl') class GetHtml(threading.Thread): def run(self): print('gethtml') t1 = GetUrl() t2 = GetHtml() t1.start() t2.start() #设置线程随主线结束而结束 必须在start之前调用 t1.setDaemon(True) t2.setDaemon(True) #主线程等待子线程的结束而结束 t1.join() t2.join()+ print('线程结束')
3.线程间通信
使用Queue
![python多线程 - 文章图片](/upload/getfiles/0001/2021/5/6/20210506122126745.jpg)
![python多线程 - 文章图片](/upload/getfiles/0001/2021/5/6/20210506122126935.jpg)
import threading from queue import Queue import time def get_url(t): i = 0 while True: i+=1 que.put(i) time.sleep(2) def get_html(t): j = 0 while True: print(que.get()) time.sleep(2) que = Queue(maxsize=10) t1 = threading.Thread(target=get_url, args=('get_url',)) t2 = threading.Thread(target=get_html, args=('get_html',)) t1.start() t2.start() que.join() #设置线程随主线结束而结束 必须在start之前调用 # t1.setDaemon(True) # t2.setDaemon(True) #主线程等待子线程的结束而结束 t1.join() t2.join() print('线程结束')View Code
常用方法
q.qsize() 返回队列的大小
q.empty() 如果队列为空,返回True,反之False
q.full() 如果队列满了,返回True,反之False
q.full 与 maxsize 大小对应
q.get([block[, timeout]]) 获取队列,timeout等待时间
q.get_nowait() 相当q.get(False) 非阻塞 q.put(item) 写入队列,timeout等待时间
q.put_nowait(item) 相当q.put(item, False)
q.task_done() 在完成一项工作之后,q.task_done() 函数向任务已经完成的队列发送一个信号
q.join() 实际上意味着等到队列为空,再执行别的操作
内容总结
以上是互联网集市为您收集整理的python多线程全部内容,希望文章能够帮你解决python多线程所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。