
Python
并发模型
|
557
print(f'Checking {len(NUMBERS)} numbers with {procs} processes:')
t0 = perf_counter()
jobs: JobQueue = SimpleQueue()
➋
results: ResultQueue = SimpleQueue()
start_jobs(procs, jobs, results)
➌
checked = report(procs, results)
➍
elapsed = perf_counter() - t0
print(f'{checked} checks in {elapsed:.2f}s')
➎
def report(procs: int, results: ResultQueue) -> int:
➏
checked = 0
procs_done = 0
while procs_done < procs:
➐
n, prime, elapsed = results.get()
➑
if n == 0:
➒
procs_done += 1
else:
checked += 1
➓
label = 'P' if prime else ' '
print(f'{n:16} {label} {elapsed:9.6f}s')
return checked
if __name__ == '__main__': ...