from time import sleep
def A(list):
res_list = []
for i in list:
sleep(1)
res_list.append(i*2)
return res_list
def B(list):
final = []
for i in list:
sleep(1)
final.append(i*2)
return final
if __name__ == '__main__':
list = [1,2,3]
res_list = A(list)
final = B(res_list)
print(final)
你可以用多线程,每个线程都是执行A 再执行B
这样比较合理
感觉可能是这样
from multiprocessing import Queue
from threading import Thread
from time import sleep, time
def A_Thread(i, q):
sleep(1)
q.put(i*2)
def B_Thread(i, q):
sleep(1)
q.put(i*2)
if __name__ == '__main__':
start = time()
lst = [1, 2, 3, 4] # 初始输入
q = Queue() # 容器
thread_lst_a = [Thread(target = A_Thread, args = (i, q)) for i in lst]
for i in thread_lst_a: i.start()
for i in thread_lst_a: i.join()
lst_tmp = [q.get() for _ in range(len(lst))]
thread_lst_b = [Thread(target = B_Thread, args = (i, q)) for i in lst_tmp]
for i in thread_lst_b: i.start()
for i in thread_lst_b: i.join()
res_lst = [q.get() for _ in range(len(lst_tmp))]
print(res_lst, time() - start) # [4, 12, 16, 8] 2.069