多线程3

多线程3

线程任务无法像函数一样用return返回一个值,Queue类是解决这个问题的一种方法。

以下代码用Queue方法返回线程任务的处理结果:

import threading
from queue import Queue


def thread1_job(lis, q):
    for i in range(3):
        lis[i] = lis[i] * 2
    q.put(lis)


def main():
    data = [[1, 2, 3], [2, 3, 4], [3, 4, 5]]
    thread = []
    queue = Queue()
    for i in range(3):
        t = threading.Thread(target=thread1_job, args=(data[i], queue))
        t.start()
        thread.append(t)
    for i in range(3):
        thread[i].join()

    for _ in range(3):
        print(queue.get())


if __name__ == '__main__':
    main()

输出结果:

[2, 4, 6]
[4, 6, 8]
[6, 8, 10]

本文中线程的任务是把3元数组的每个元素乘2。

Queue是队列,先进先出。

在任务中乘2以后,把新的数组放到Queue对象中。

在main函数,可以从Queue对象取出新的数组。

上一篇:trackr: An AngularJS app with a Java 8 backend – Part I


下一篇:2021-05-10