python多线程获取函数返回值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python多线程获取函数返回值相关的知识,希望对你有一定的参考价值。
welcome to my blog
创建线程的方式有两种, 1.封装一个类, 并让该类继承threading.Thread类 2.将方法名和参数传给Thread()的构造函数;
封装成类可以获取子线程的返回值
具体例子: 用4个线程分别计算4个列表中元素的平方值
import threading
import random
class MyClass(threading.Thread):
# woc, 子线程会共享这个res???? 原来这是python的静态变量! 666 知识点: 静态变量:在class内的,但不在class的方法内的,这就是静态变量
# res = []
def __init__(self, arr):
super().__init__()
self.arr = arr
# 这个res绝对不能创建成静态变量!
self.res = []
def calPow(self):
print(正在执行的线程:, threading.current_thread().getName())
for i in self.arr:
self.res.append(i*i)
def run(self):
self.calPow()
def getRes(self):
return self.res
def main():
# 生成4个长度为5的list, 等会用4个线程分别计算这4个list中元素的平方
arrs = [[random.randint(1, 15) for x in range(5)] for x in range(4)]
jobs = []
print(\\n打印4个list:)
for i in range(4):
print(arrs[i])
# 使用4个线程
print(\\n调用4个子线程:)
for i in range(4):
t = MyClass(arrs[i])
jobs.append(t)
t.start()
result = []
# 获取每个线程的结果
print(\\n获取每个线程的结果)
for t in jobs:
# 等待子线程完成
t.join()
# 获取子线程的结果
result.append(t.getRes())
print(\\n打印最终结果:)
for i in result:
print(i)
if __name__ == __main__:
main()
基础知识, 写这个小例子时发现了自己的知识漏洞
python中的4中变量类型,原文链接 1、全局变量:在模块内、在所有函数外面、在class外面,这就是全局变量。
2、局部变量:在函数内、在class的方法内(未加self修饰的) ,这就是局部变量
3、静态变量:在class内的,但不在class的方法内的,这就是静态变量
4、实例变量:在class的方法内的,用self修饰的变量,这就是实例变量
以上是关于python多线程获取函数返回值的主要内容,如果未能解决你的问题,请参考以下文章