python多线程队列使用

#线程1 -> 队列 -> 线程2 -> url_web

#

#

#

#!/usr/bin/env python
#! coding=utf-8
#!by=xiaohe
import Queue,threading,time,random
from moniItems import mon
import urllib2
from flask import Flask,request,json

queueLock = threading.Lock()

class t1(threading.Thread):
    def __init__(self,t_name,queue):
        threading.Thread.__init__(self,name=t_name)
        self.data = queue

    def run(self):
        #for i in range(5):
        while True:
            queueLock.acquire()
            if  self.data.empty():
                print time.ctime(),self.getName()
                self.data.put(mon().runAllGet())
                time.sleep(1)
                queueLock.release()
            else:
                queueLock.release()
        #print time.ctime(),self.getName(),"end"

class t2(threading.Thread):
    def __init__(self,t_name,queue):
        threading.Thread.__init__(self,name=t_name)
        self.data=queue
    def run(self):
        #for i in range(5):
        while True:
            queueLock.acquire()
            if not self.data.empty():
                vai = self.data.get()
                #print  self.getName() , vai
                a=urllib2.Request("http://reboot:8088", json.dumps(vai), {‘Content-Type‘: ‘application/json‘})
                urllib2.urlopen(a)
                queueLock.release()
            else:
                queueLock.release()
def mai():
    queue = Queue.Queue(5)
    tt1 = t1(‘shou‘,queue)
    tt2 = t2(‘fa‘,queue)
    tt1.start()
    tt2.start()
    tt1.join()
    tt2.join()
if __name__==‘__main__‘:
    mai()
时间: 2024-10-12 18:42:14

python多线程队列使用的相关文章

python 多线程队列套接字

#server端import socket import selectors import threading from threading import Thread import time import queue selector = selectors.DefaultSelector() socket_server = socket.socket() address_server = ('0.0.0.0',8080) socket_server.bind(address_server)

Python 用队列实现多线程并发

# Python queue队列,实现并发,在网站多线程推荐最后也一个例子,比这货简单,但是不够规范 # encoding: utf-8 __author__ = 'yeayee.com' # 由本站增加注释,可随意Fork.Copy from queue import Queue # Queue在3.x中改成了queue import random import threading import time class Producer(threading.Thread): ""&qu

Python 多线程同步队列模型

Python 多线程同步队列模型 我面临的问题是有个非常慢的处理逻辑(比如分词.句法),有大量的语料,想用多线程来处理. 这一个过程可以抽象成一个叫"同步队列"的模型. 具体来讲,有一个生产者(Dispatcher)一方面从语料中读入句子,并且存入队列中,一方面看有没有空闲的消费者(Segmentor),如果有,就把句子从队列中弹出并交给这个空闲的消费者处理. 然后消费者把处理完成的结果交给生产者输出,生产者要保证输出与输入顺序一致. 消费者是典型的threading,它需要看见生成者

Python多线程(threading)学习总结

注:此文除了例子和使用心得是自己写的,很多都是Python核心编程中的原文.原文文风应该能看出来,就不每个地方单独表明出处了. 线程(有时被称为轻量级进程)跟进程有些相似,不同的是,所有的线程运行在同一个进程中,共享相同的运行环境.它们可以想像成是在主进程或"主线程"中并行运行的"迷你进程". 线程有开始,顺序执行和结束三部分.它有一个自己的指令指针,记录自己运行到什么地方.线程的运行可能被抢占(中断),或暂时的被挂起(也叫睡眠),让其它的线程运行,这叫做让步.一个

python 多线程和C++多线程的区别

看到论坛上有人问python多线程和C++多线程的区别? 暖神是这样回答的: Python有Global Interpreter Lock,所以嘛……你懂的.C++11开始才有多线程,使用共享内存方式的线程间通信,有低级的atomic operation和memory order,以及高级的lock, condition的,却没有提供消息队列. 然后,就去找GIL(Global Interpreter Lock)的定义,下面有一个定义,wiki的定义是这样的.在stackoverflow上看到了

Python多线程目录扫描器

Python多线程目录扫描器,代码很简单,不过也花了我很多时间. 遇到文件如下: 多线程执行问题 队列执行问题 编码问题 目录问题 自己逻辑问题 报告长官,总结完毕,以下是成果,请长官查收: # coding:utf-8 import requests import threading import Queue import sys url_list = Queue.Queue() mutex = threading.Lock() def path(url): with open("./path

Python 多线程教程:并发与并行

Python 多线程教程:并发与并行 在批评Python的讨论中,常常说起Python多线程是多么的难用.还有人对 global interpreter lock(也被亲切的称为“GIL”)指指点点,说它阻碍了Python的多线程程序同时运行.因此,如果你是从其他语言(比如C++或Java)转过来的话,Python线程模块并不会像你想象的那样去运行.必须要说明的是,我们还是可以用Python写出能并发或并行的代码,并且能带来性能的显著提升,只要你能顾及到一些事情.如果你还没看过的话,我建议你看看

python消息队列snakemq使用总结

Python 消息队列snakemq总结 最近学习消息总线zeromq,在网上搜了python实现的消息总线模块,意外发现有个消息队列snakemq,于是拿来研究一下,感觉还是很不错的,入手简单使用也简单(比ice强多了),就是资料太少了,只能自己抠. 一.关于snakemq的官方介绍 1纯python实现,跨平台 2自动重连接 3可靠发送--可配置的消息方式与消息超时方式 4持久化/临时 两种队列 5支持异步 -- poll() 6symmetrical -- 单个TCP连接可用于双工通讯 7

Python 多线程 -thread threading Queue- 简单学习

在实际工作过程中,会出现需要并发的做一些事情,例如一台机器测到几千台机器的网络连通性,如果你单线程一台一台测的话,会花费很多的事情,不具有实时性,更不能在变化的时候立刻感知当时网络的状况,这时多线程就是一个很好地选择.python已经给我们封装好了多线程库thread和threading. thread:比较底层的模块 threading:Higher-level threading interface ps:建议使用threading模块 - 高级别的threading模块更为先进,对线程的支