ProcessPoolExecutor in concurrent

Simple example

import time
import concurrent.futures

start = time.perf_counter()

def do_something(seconds):
	print(f'sleeping {seconds} second(s)...')
	time.sleep(seconds)
	return f'Done sleeping...{seconds}'


f1 = executor.submit(do_something, 1)
f2 = executor.submit(do_something, 1)

print(f1.result())
print(f2.result())


finish = time.perf_counter()

print(f'Finish in {round(finish-start,2)} seconds(s)')

For循环

import time
import concurrent.futures

start = time.perf_counter()

def do_something(seconds):
	print(f'sleeping {seconds} second(s)...')
	time.sleep(seconds)
	return f'Done sleeping...{seconds}'

with concurrent.futures.ProcessPoolExecutor() as executor:
	results = [executor.submit(do_something,1) for _ in range(10)]

	for f in concurrent.futures.as_completed(results):
		print(f.result())

finish = time.perf_counter()

print(f'Finish in {round(finish-start,2)} seconds(s)')
import time
import concurrent.futures

start = time.perf_counter()

def do_something(seconds):
	print(f'sleeping {seconds} second(s)...')
	time.sleep(seconds)
	return f'Done sleeping...{seconds}'

with concurrent.futures.ProcessPoolExecutor() as executor:
	secs = [5,4,3,2,1]
	results = [executor.submit(do_something,sec) for sec in secs]

	for f in concurrent.futures.as_completed(results):
		print(f.result())



finish = time.perf_counter()

print(f'Finish in {round(finish-start,2)} seconds(s)')

map函数

import time
import concurrent.futures

start = time.perf_counter()

def do_something(seconds):
	print(f'sleeping {seconds} second(s)...')
	time.sleep(seconds)
	return f'Done sleeping...{seconds}'

with concurrent.futures.ProcessPoolExecutor() as executor:
	secs = [5,4,3,2,1]
	results = executor.map(do_something,secs)

	for result in results:
		print(result)

finish = time.perf_counter()

print(f'Finish in {round(finish-start,2)} seconds(s)')
posted @ 2023-01-19 17:44  华小电  阅读(26)  评论(0)    收藏  举报