python通过多线程并获取返回值

python

以下是多线程获取返回值的一种实现方式

# -*-coding:utf-8-*-

from time import ctime, sleep

import threading

import numpy as np

import collections

loops = ['广州', '北京']

t_list = ['01', '02', '03']

cldas_sum = collections.deque()

class MyThread(threading.Thread):

def __init__(self, func, args, name=''):

threading.Thread.__init__(self)

self.name = name

self.func = func

self.args = args

self.result = self.func(*self.args)

def get_result(self):

try:

return self.result

except Exception:

return None

def loop(nloop):

for j in t_list:

cldas_values = []

for k in range(4):

cldas_value = nloop + str(k)

cldas_values.append(cldas_value)

cldas_values.append(j)

cldas_values.append(nloop)

cldas_sum.append(cldas_values)

print(id(cldas_values))

#print(cldas_sum)

return cldas_sum

def main():

print('start at', ctime())

threads = []

nloops = range(len(loops))

for i in nloops:

t = MyThread(loop, (loops[i],), loop.__name__)

threads.append(t)

for i in nloops: # start threads 此处并不会执行线程,而是将任务分发到每个线程,同步线程。等同步完成后再开始执行start方法

threads[i].start()

for i in nloops: # jion()方法等待线程完成

threads[i].join()

print(threads[1].get_result())

print('DONE AT:', ctime())

if __name__ == '__main__':

main()

需要注意的是:

如果多个线程共用一个公共数据,那么我们需要做的就是将这个公共数据设置成队列格式,要不然多个线程共同访问这个数据可能会出错,需要加锁。设置成队列比加锁再放锁效率高多了

以上是 python通过多线程并获取返回值 的全部内容, 来源链接: utcz.com/z/387193.html

回到顶部