广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python 多线程+queue
  • 256
分享到

python 多线程+queue

多线程pythonqueue 2023-01-31 06:01:20 256人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

python的queue设计的是线程安全的,所以大家伙放心用吧! Python多线程的一种简单的实现如下: #!/usr/bin/env python # -*- coding: utf-8 -*- import threadi

python的queue设计的是线程安全的,所以大家伙放心用吧!
Python多线程的一种简单的实现如下:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import threading
import time

def fun(argv):
    print 'in', argv
    time.sleep(2)

threads = []    #用于保存线程
for i in range(5):  #开5个线程
    t = threading.Thread(target = fun, args = str(i))
    threads.append(t)

if __name__ == '__main__':
    #开始所有的线程
    for i in threads:
        i.start()
    #保证线程执行完    
    for i in threads:
        i.join()
    print 'all over'

程序执行结果如下
这里写图片描述
使用threading可以很容易的开启多线程,join的作用是用于线程同步,看自己的需求而定。
好了,现在进入正题,多线程+queue怎么弄,先给出代码

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import Queue
import threading
import time

Thread_id = 1
Thread_num = 3
class myThread(threading.Thread):
    def __init__(self, q):
        global Thread_id
        threading.Thread.__init__(self)
        self.q = q
        self.Thread_id = Thread_id
        Thread_id = Thread_id + 1
    def run(self):
        while True:
            try:
                task = self.q.get(block = True, timeout = 1) #不设置阻塞的话会一直去尝试获取资源
            except Queue.Empty:
                print 'Thread' ,  self.Thread_id , 'end'
                break
            #取到数据,开始处理(依据需求加处理代码)
            print "Starting " , self.Thread_id
            print task
            self.q.task_done()
            print "Ending " , self.Thread_id


q = Queue.Queue(10)

#向资源池里面放10个数用作测试
for i in range(10):
    q.put(i)

#开Thread_num个线程 
for i in range(0, Thread_num):
    worker = myThread(q)
    worker.start()
q.join() #等待所有的队列资源都用完
print "Exiting Main Thread"

结果如下
这里写图片描述
是不是感觉很乱,哈哈没关系,这才是多线程的魅力所在!你永远不知道是从哪个线程开始。
在这里Queue作为资源池,线程去从资源池中取数据进行处理,可是为什么需要用到Queue呢, 因为可能资源池很大,而开的线程数有限,所以等一个线程处理完它的任务之后,它可以继续去取资源处理!这就可以让先执行完一个任务的线程不立即停下来,而是去取另一个资源处理,直到没有数据的时候它才会停下来。简单理解:q.task_done是表明当前的资源处理完了,q.join()会等到所有的资源都被处理了才会向下继续执行,这就是一种同步。

--结束END--

本文标题: python 多线程+queue

本文链接: https://www.lsjlt.com/news/189655.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python 多线程+queue
    python的queue设计的是线程安全的,所以大家伙放心用吧! python多线程的一种简单的实现如下: #!/usr/bin/env python # -*- coding: utf-8 -*- import threadi...
    99+
    2023-01-31
    多线程 python queue
  • Python多线程 Queue 模块常见用法
    queue介绍 queue是python中的标准库,俗称队列,可以直接import 引用,在python2.x中,模块名为Queue 在python中,多个线程之间的数据是共享的,多个线程进行数据交换的时候,不能够...
    99+
    2022-06-02
    Python Queue 模块 Python多线程
  • Python多线程中Queue模块怎么用
    这篇文章将为大家详细讲解有关Python多线程中Queue模块怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。queue介绍queue是python中的标准库,俗称队列,可以直接import 引用,在...
    99+
    2023-06-20
  • python3 queue多线程通信
    目录queue分类例子一、生产消费模式例子二、task_done和join例子三、多线程里用queuequeue分类 python3 queue分三类: 先进先出队列后进先出的栈优先...
    99+
    2022-11-11
  • Python线程之线程安全的队列Queue
    目录一、什么是队列?二、队列基操 入队/出队/查队列状态三、Queue是一个线程安全的类一、什么是队列? 像排队一样,从头到尾排成一排,还可以有人继续往后排队,这就是队列。 这里学委...
    99+
    2022-11-13
  • python3 queue多线程通信怎么实现
    这篇文章主要介绍了python3 queue多线程通信怎么实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇python3 queue多线程通信怎么实现文章都会有所收获,下面我们一起来看看吧...
    99+
    2023-07-02
  • 41. Python Queue 多进
    消息队列:消息队列是在消息传输过程中保存消息的容器。消息队列最经典的用法就是消费者和生产者之间通过消息管道来传递消息,消费者和生产生是不通的进程。生产者往管道中写消息,消费者从管道中读消息。相当于水管,有一个入口和出口,水从入口流入出口流出...
    99+
    2023-01-31
    Python 多进 Queue
  • 简单谈谈python中的Queue与多进程
    最近接触一个项目,要在多个虚拟机中运行任务,参考别人之前项目的代码,采用了多进程来处理,于是上网查了查python中的多进程 一、先说说Queue(队列对象) Queue是python中的标准库,可以直接i...
    99+
    2022-06-04
    进程 简单 python
  • python多线程————3、多线程间通
    1、共享变量 #通过共享变量 import time import threading url_list = [] def get_detail_html(): global url_list while True: ...
    99+
    2023-01-31
    多线程 python
  • Python 多线程
      文章来源:https://www.runoob.com/python/python-multithreading.html 多线程类似于同时执行多个不同程序,多线程运行有如下优点: 使用线程可以把占据长时间的程序中的...
    99+
    2023-01-31
    多线程 Python
  • python多线程
    Python 多线程 多线程类似于同时执行多个不同程序,多线程运行有如下优点: 使用线程可以把占据长时间的程序中的任务放到后台去处理。 用户界面可以更加吸引人,这样比如用户点击了一个按钮去触发某些事件的处理,可以弹出一个进度条来显示处理的...
    99+
    2023-01-30
    多线程 python
  • python—多线程
    一、多线程实例  线程时应用程序中工作的最小单位,python中提供了threading模块来对多线程操作,一般多核cpu采用多进程方式,单核才采用多线程方式  方法:  将要执行的方法threading.Thread作为参数传给构造方法(...
    99+
    2023-01-31
    多线程 python
  • Python多线程编程,线程锁
    多线程threading 模块创建线程创建自己的线程类线程通信线程同步互斥方法线程锁@需要了解!!!   什么是线程? 线程也是一种多任务的编程方法,可以利用计算机多核资源完成程序的并发运行。 线程又被称为轻量级进程 ...
    99+
    2023-01-30
    线程 多线程 Python
  • Python中线程安全队列Queue的示例分析
    小编给大家分享一下Python中线程安全队列Queue的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!一、什么是队列?像排队一样,从头到尾排成一排,还可以有人继续往后排队,这就是队列。这里学委想说的是Queue这个...
    99+
    2023-06-29
  • python多线程socket编程--多
    Python中实现socket通信的服务端比较复杂,而客户端非常简单,所以客户端基本上都是用sockct模块实现,而服务 端用有很多模块可以使用,如下: 1、客户端 #!/usr/bin/env python #coding...
    99+
    2023-01-31
    多线程 python socket
  • Python多线程编程
      一个串行程序需要从每个I/O终端通道来检测用户的输入,然而程序在读取过程中不能阻塞,因为用户输入的到达时间的不确定,并且阻塞会妨碍其他I/O通道的处理。由于串行程序只有唯一的执行线程,因此它需要兼顾执行的多个任务,确保其中的某个任务不会...
    99+
    2023-01-31
    多线程 Python
  • python 多线程编程
    使用回调方式 import time def countdown(n): while n > 0: print('T-minus', n) n -= 1 time.sleep...
    99+
    2023-01-31
    多线程 python
  • thinkPHP/fastadmin topthink/think-queue 多进程
    运行环境centos7.6 lnmp 1,安装redis扩展和安装topthink/think-queue(fastadmin自带) 2,新增配置文件application/extra/queue.p...
    99+
    2023-08-31
    php redis
  • python多线程-Semaphore(
    Semaphore(value=1) Semaphore对象内部管理一个计数器,该计数器由每个acquire()调用递减,并由每个release()调用递增。计数器永远不会低于零,当acquire()发现计数器为零时,线程阻塞,等待其他线...
    99+
    2023-01-30
    多线程 python Semaphore
  • python多线程threading
    本文通过 4个example 介绍python中多线程package —— threading的常用用法, 包括调用多线程, 同步队列类Queue, Ctrl+c结束多线程。 example1. 调用10个线程, 分别打印0~...
    99+
    2023-01-31
    多线程 python threading
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作