Python线程编程解决异步线程中速度不同的方案


在计算机的实际相关的应用中你是否对两个相关异步线程速度产生不同时,而产生一些相关的问题,针对这一相关问题,Python线程编程就可以巧妙的解决相关的问题,以下是文章的具体介绍。

我们经常会采用生产者/消费者关系的两个线程来处理一个共享缓冲区的数据。例如一个生产者线程接受用户数据放入一个共享缓冲区里,等待一个消费者线程对数据 取出处理。但是如果缓冲区的太小而生产者和消费者两个异步线程的速度不同时,容易出现一个线程等待另一个情况。

为了尽可能的缩短共享资源并以相同速度工作 的各线程的等待时间,我们可以使用一个“队列”来提供额外的缓冲区。

创建一个“队列”对象

  1. import Queue  
  2. myqueue = Queue.Queue(maxsize = 10)Queue.Queue 

类即是一个队列的同步实现。队列长度可为无限或者有限。可通过Queue的构造函数的可选参数maxsize来设定队列长度。如果maxsize小于1就表示队列长度无限。将一个值放入队列中

  1. myqueue.put(10) 

调用队列对象的put()方法在队尾插入一个项目。put()有两个参数,第一个item为必需的,为插入项目的值;第二个block为可选参数,默认为1。如果队列当前为空且block为1,put()方法就使调用线程暂停,直到空出一个数据单元。如果block为0,put方法将引发Full异常。将一个值从队列中取出

  1. myqueue.get() 

调用队列对象的get()方法从队头删除并返回一个项目。可选参数为block,默认为1。如果队列为空且block为1,get()就使调用线程暂停,直至有项目可用。如果block为0,队列将引发Empty异常。我们用一个例子来展示如何使用

  1. Queue# queue_example.py 

以上的内容就是对Python线程编程的相关实际应用方案的部分介绍。

相关内容

    暂无相关文章

评论关闭