Python进阶第二篇多线程消息队列queue

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python进阶第二篇多线程消息队列queue相关的知识,希望对你有一定的参考价值。

1.Python多线程、多进程

目的提高并发
1.一个应用程序,可以有多进程和多线程
2.默认:单进程,单线程
3.单进程,多线程
  IO操作,不占用CPU
  python的多线程:IO操作,多线程提供并发
计算性操作
多进程提高并发
4.GIL,全局解释器锁
总结:
多进程,多线程,提供并发
IO密集型:多线程
计算密集型:多进程

2.threading模块

threading模块对象 描述
Thread 表示一个线程的执行的对象
Lock 锁原语对象
RLock 可重入锁对象。使单线程可以再次获得已经获得了的锁(递归锁定)
Event 通用的条件变量。多个线程可以等待某个事件的发生,在事件发生后,所有的线程都会被激活
BoundedSemaphore 每次允许几个线程通过
Timer 等待多久在开始运行

 

 

 

 

 

 

 

3.如何创建一个线程

#!/usr/bin/env python
# _*_ coding:utf-8 _*_
# 1.先导出threading模块 import threading import time def f1(arg): time.sleep(2) print(arg) for i in range(10): # 2.创建一个线程对象 t = threading.Thread(target=f1,args=(i,)) # 创建一个线程那你想让它执行那些操作呢,就是target指定 # 假设上面的f1是一个函数,那么如果函数可以传参数就用args=(参数1,参数2) t.start() # t.start() # 并不代表当前线程会被立即执行 # setDaemon方法,主进程执行完就退出不在等待子进程结束 # t.setDaemon(True) # 表示主线程到此等待,知道子线程执行完毕 t.join() print("end") # 默认情况下主线程不会等待子线程t.start()执行完,而是直接执行下面的print("end"),但是程序不会退出,而是等子进程执行结束后才退出程序

  

 

以上是关于Python进阶第二篇多线程消息队列queue的主要内容,如果未能解决你的问题,请参考以下文章

python使用消息队列RabbitMq(进阶)

Python进阶:进程的状态及基本操作

消息队列介绍与RabbitMQ基本示例

41. Python Queue 多进程的消息队列 PIPE

RabbitMQ 消息队列

系统架构分布式消息队列