线程封装使用

 1 #!/usr/bin/env python
 2 # -*- coding:utf8 -*-
 3 # __author__ = '北方姆Q'
 4 
 5 
 6 import time
 7 from concurrent.futures import ThreadPoolExecutor, as_completed
 8 
 9 
10 class ThreadWork(object):
11     def __init__(self, funcs):
12         self.future_set = set()
13         self.funcs = funcs
14 
15         with ThreadPoolExecutor(len(self.funcs)) as executor:
16             for func, *args in self.funcs:
17                 future = executor.submit(func, *args)
18                 self.future_set.add(future)
19 
20         for future in as_completed(self.future_set):
21             error = future.exception()
22             if error is not None:
23                 raise error
24 
25         self.results = []
26         for future in self.future_set:
27             self.results.append(future.result())
28 
29 
30 def task1(x, y, z):
31     return x + y + z
32 
33 
34 def task2(z):
35     return z
36 
37 
38 def task3(z):
39     return z * z
40 
41 
42 my_work = (
43     (task1, 10, 20, 30),
44     (task2, 66),
45     (task3, 5),
46 )
47 
48 obj = ThreadWork(my_work)
49 print(obj.results)

 

posted @ 2020-11-26 11:19  北方姆Q  阅读(109)  评论(0编辑  收藏  举报