# from concurrent.futures import ProcessPoolExecutor
# import time
#
# def save_test(name,n):
# n = n+1
# time.sleep(n)
# print("{}的名字为{}".format(name,n))
# return n
#
# ex = ProcessPoolExecutor(max_workers=3)
# lista = ["Tom","Jerry","XiaoHua","Ming"]
#
# for i,j in enumerate(lista):
# #存在两个以上的参数时,直接用逗号隔开,不需要用括号
# ex.submit(save_test,j,i)
# #ex.shutdown(wait=True)是进程池内部的进程都执行完毕,才会关闭,然后执行后续代码
# ex.shutdown(wait=True)
# print("主进程直接运行")
# #同步调用:提交/调用一个任务,然后就在原地等着,等到该任务执行完毕拿到结果,再执行下一行代码
# from concurrent.futures import ProcessPoolExecutor
# import time
#
# def save_test(name,n):
# n = n+1
# time.sleep(n)
# print("{}的名字次数为{}".format(name,n))
# return n
#
#
# if __name__ == '__main__':
# start = time.time()
# ex = ProcessPoolExecutor(max_workers=3)
# lista = ["Tom","Jerry","XiaoHua","Ming"]
#
# for i,j in enumerate(lista):
# #存在两个以上的参数时,直接用逗号隔开,不需要用括号
# task = ex.submit(save_test,j,i).result()
# print(task)
# #ex.shutdown(wait=True)是进程池内部的进程都执行完毕,才会关闭,然后执行后续代码
# ex.shutdown(wait=True)
# print("主进程直接运行")
# stop = time.time()
# print(stop-start)
#异步调用: 提交/调用一个任务,不在原地等着,直接执行下一行代码
from concurrent.futures import ProcessPoolExecutor
import time
def save_test(name,n):
n = n+1
time.sleep(n)
print("{}的名字次数为{}".format(name,n))
return n
if __name__ == '__main__':
obj = list()
start = time.time()
ex = ProcessPoolExecutor(max_workers=3)
lista = ["letme","Mlxg","XiaoHu","Ming"]
for i,j in enumerate(lista):
#存在两个以上的参数时,直接用逗号隔开,不需要用括号
task = ex.submit(save_test,j,i)
obj.append(task)
#ex.shutdown(wait=True)是进程池内部的进程都执行完毕,才会关闭,然后执行后续代码
ex.shutdown(wait=True)
print("主进程直接运行")
for i in obj:
print(i.result())
stop = time.time()
print(stop-start)
# from concurrent.futures import ThreadPoolExecutor, as_completed
# import time
#
# # 参数times用来模拟网络请求的时间
# def get_html(times):
# time.sleep(times)
# print("get page {}s finished".format(times))
# return times
#
# executor = ThreadPoolExecutor(max_workers=2)
# urls = [3, 2, 4] # 并不是真的url
# all_task = [executor.submit(get_html, url) for url in urls]
#
#
# for future in as_completed(all_task):
# data = future.result()
# print("in main: get page {}s success".format(data))
#
# from concurrent.futures import ThreadPoolExecutor
# import time
#
# # 参数times用来模拟网络请求的时间
# def get_html(times):
# time.sleep(times)
# print("get page {}s finished".format(times))
# return times
#
# executor = ThreadPoolExecutor(max_workers=2)
# urls = [3, 2, 4] # 并不是真的url
#
# for data in executor.map(get_html, urls):
# print("in main: get page {}s success".format(data))
from concurrent.futures import ThreadPoolExecutor, wait, ALL_COMPLETED, FIRST_COMPLETED
import time
# 参数times用来模拟网络请求的时间
def get_html(times):
time.sleep(times)
print("get page {}s finished".format(times))
return times
executor = ThreadPoolExecutor(max_workers=2)
urls = [3, 2, 4] # 并不是真的url
all_task = [executor.submit(get_html, (url)) for url in urls]
wait(all_task, return_when=ALL_COMPLETED)
print("main")