美文网首页
线程 -- 从Queue中获取存储的结果

线程 -- 从Queue中获取存储的结果

作者: glRu | 来源:发表于2020-07-27 11:37 被阅读0次

多线程调用的函数不能用 return 返回值

1. 导入线程,队列的标准模块

import threading

import time

from queue import Queue

2. 定义一个被多线程调用的函数

    函数的参数是一个列表 l 和一个队列 q ,函数的功能是,对列表的每个元素进行平方计算,将结果保存在队列中

def job(l,q):

    for i in range (len(l)):

        l[i] = l[i]**2

    q.put(l)  #多线程调用的函数不能用return返回值

                 # Queue.put(item, [block[, timeout]])   向队列中添加数据 ,timeout等待时间

3. 定义一个多线程函数

在多线程函数中定义一个Queue,用来保存返回值,代替return,定义一个多线程列表,初始化一个多维数据列表,用来处理:

def multithreading():

    q =Queue()

    threads = []

    data = [[1,2,3],[3,4,5],[4,4,4],[5,5,5]]

    for i in range(4):

        t = threading.Thread(target=job,args=(data[i],q))

        t.start()

        threads.append(t)

    for thread in threads:

        thread.join()

    results = []

    for _ in range(4):

        results.append(q.get()) #  Queue.get([block[, timeout]])   向队列中读取数据 ,timeout等待时间 

    print(results)

完整代码如下:

import threading

import time

from queue import Queue

def job(l,q):

    for i in range (len(l)):

        l[i] = l[i]**2

    q.put(l)

def multithreading():

    q =Queue()

    threads = []

    data = [[1,2,3],[3,4,5],[4,4,4],[5,5,5]]

    for i in range(4):

        t = threading.Thread(target=job,args=(data[i],q))

        t.start()

        threads.append(t)

    for thread in threads:

        thread.join()

    results = []

    for _ in range(4):

        results.append(q.get())

    print(results)

if __name___=='__main__':

    multithreading()

相关文章

  • 线程 -- 从Queue中获取存储的结果

    多线程调用的函数不能用 return 返回值 1.导入线程,队列的标准模块 import threadingimp...

  • Java 通过阻塞队列实现生产者消费者模式

    阻塞队列 Blocking Queue 当队列空时,获取元素的线程会等待 当队列满时,存储元素的线程会等待 提供的...

  • 关于ThreadLocal对象

    ThreadLocal是一个线程内部的数据存储类,数据存储以后,只能在指定线程中获取到存储的数据,其它线程无法获取...

  • Java-多线程-条件队列

    一、队列Queue类型 JUC包中队列Queue是用于存储线程任务,常见的Queue类型有ArrayBlockin...

  • android opensl 播放音频

    一、思路: 在Jni层初始化好OpenSl,解码线程不停地从packet queue中获取packet(这个部分请...

  • FMDB源码分析

    1.关键点再多线程 存储数据的,要通过FMDB Queue 串行队列dispatch_queue_set_sp...

  • 多线程爬虫

    多线程爬虫 Queue(队列对象) Queue是python中的标准库,可以直接import Queue引用; 队...

  • 列表与队列——谈谈线程安全

    关键词:线程安全、GIL、原子操作(atomic operation)、存储数据类型(List、Queue.Que...

  • 多线程的应用场景

    GCD线程间通信 //0.获取一个全局的队列 dispatch_queue_tqueue=dispatch_get...

  • python队列Queue

    一、Queue Queue是python标准库中的线程安全的队列(FIFO)实现,提供了一个适用于多线程编程的先进...

网友评论

      本文标题:线程 -- 从Queue中获取存储的结果

      本文链接:https://www.haomeiwen.com/subject/ttcfrktx.html