ch20 cleanup and f-strings
This commit is contained in:
@@ -2,7 +2,6 @@
|
|||||||
|
|
||||||
import math
|
import math
|
||||||
|
|
||||||
|
|
||||||
PRIME_FIXTURE = [
|
PRIME_FIXTURE = [
|
||||||
(2, True),
|
(2, True),
|
||||||
(142702110479723, True),
|
(142702110479723, True),
|
||||||
|
|||||||
@@ -6,11 +6,11 @@ can be faster than sequential code for CPU-intensive work.
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
# tag::PRIMES_PROC_TOP[]
|
# tag::PRIMES_PROC_TOP[]
|
||||||
|
import sys
|
||||||
from time import perf_counter
|
from time import perf_counter
|
||||||
from typing import NamedTuple
|
from typing import NamedTuple
|
||||||
from multiprocessing import Process, SimpleQueue, cpu_count # <1>
|
from multiprocessing import Process, SimpleQueue, cpu_count # <1>
|
||||||
from multiprocessing import queues # <2>
|
from multiprocessing import queues # <2>
|
||||||
import sys
|
|
||||||
|
|
||||||
from primes import is_prime, NUMBERS
|
from primes import is_prime, NUMBERS
|
||||||
|
|
||||||
@@ -60,8 +60,8 @@ def main() -> None:
|
|||||||
if jobs.empty(): # <9>
|
if jobs.empty(): # <9>
|
||||||
break
|
break
|
||||||
|
|
||||||
time = perf_counter() - t0
|
elapsed = perf_counter() - t0
|
||||||
print('Total time:', f'{time:0.2f}s')
|
print(f'Total time: {elapsed:.2f}s')
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# tag::PRIMES_PROC_TOP[]
|
# tag::PRIMES_PROC_TOP[]
|
||||||
from time import perf_counter
|
from time import perf_counter
|
||||||
from typing import Tuple, List, NamedTuple
|
from typing import List, NamedTuple
|
||||||
from multiprocessing import Process, SimpleQueue # <1>
|
from multiprocessing import Process, SimpleQueue # <1>
|
||||||
|
|
||||||
from primes import is_prime, NUMBERS
|
from primes import is_prime, NUMBERS
|
||||||
@@ -34,8 +34,8 @@ def main() -> None:
|
|||||||
label = 'P' if prime else ' '
|
label = 'P' if prime else ' '
|
||||||
print(f'{n:16} {label} {elapsed:9.6f}s')
|
print(f'{n:16} {label} {elapsed:9.6f}s')
|
||||||
|
|
||||||
time = perf_counter() - t0
|
elapsed = perf_counter() - t0
|
||||||
print('Total time:', f'{time:0.2f}s')
|
print(f'Total time: {elapsed:.2f}s')
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ def main() -> None:
|
|||||||
print(f'{n:16} {label} {elapsed:9.6f}s')
|
print(f'{n:16} {label} {elapsed:9.6f}s')
|
||||||
|
|
||||||
elapsed = perf_counter() - t0 # <4>
|
elapsed = perf_counter() - t0 # <4>
|
||||||
print('Total time:', f'{elapsed:0.2f}s')
|
print(f'Total time: {elapsed:.2f}s')
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ async def check(n: int) -> int:
|
|||||||
|
|
||||||
async def supervisor(n: int) -> int:
|
async def supervisor(n: int) -> int:
|
||||||
spinner = asyncio.create_task(spin('thinking!')) # <1>
|
spinner = asyncio.create_task(spin('thinking!')) # <1>
|
||||||
print('spinner object:', spinner) # <2>
|
print(f'spinner object: {spinner}') # <2>
|
||||||
result = await check(n) # <3>
|
result = await check(n) # <3>
|
||||||
spinner.cancel() # <5>
|
spinner.cancel() # <5>
|
||||||
return result
|
return result
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ async def check(n: int) -> int:
|
|||||||
|
|
||||||
async def supervisor(n: int) -> int:
|
async def supervisor(n: int) -> int:
|
||||||
spinner = asyncio.create_task(spin('thinking!')) # <1>
|
spinner = asyncio.create_task(spin('thinking!')) # <1>
|
||||||
print('spinner object:', spinner) # <2>
|
print(f'spinner object: {spinner}') # <2>
|
||||||
result = await check(n) # <3>
|
result = await check(n) # <3>
|
||||||
spinner.cancel() # <5>
|
spinner.cancel() # <5>
|
||||||
return result
|
return result
|
||||||
|
|||||||
@@ -4,9 +4,9 @@
|
|||||||
# multiprocessing example in the python-list:
|
# multiprocessing example in the python-list:
|
||||||
# https://mail.python.org/pipermail/python-list/2009-February/675659.html
|
# https://mail.python.org/pipermail/python-list/2009-February/675659.html
|
||||||
|
|
||||||
|
import itertools
|
||||||
from multiprocessing import Process, Event
|
from multiprocessing import Process, Event
|
||||||
from multiprocessing import synchronize
|
from multiprocessing import synchronize
|
||||||
import itertools
|
|
||||||
|
|
||||||
from primes import is_prime
|
from primes import is_prime
|
||||||
|
|
||||||
@@ -26,7 +26,7 @@ def supervisor(n: int) -> int: # <1>
|
|||||||
done = Event() # <2>
|
done = Event() # <2>
|
||||||
spinner = Process(target=spin,
|
spinner = Process(target=spin,
|
||||||
args=('thinking!', done)) # <3>
|
args=('thinking!', done)) # <3>
|
||||||
print('spinner object:', spinner) # <4>
|
print(f'spinner object: {spinner}') # <4>
|
||||||
spinner.start() # <5>
|
spinner.start() # <5>
|
||||||
result = check(n) # <6>
|
result = check(n) # <6>
|
||||||
done.set() # <7>
|
done.set() # <7>
|
||||||
|
|||||||
@@ -4,8 +4,8 @@
|
|||||||
# multiprocessing example in the python-list:
|
# multiprocessing example in the python-list:
|
||||||
# https://mail.python.org/pipermail/python-list/2009-February/675659.html
|
# https://mail.python.org/pipermail/python-list/2009-February/675659.html
|
||||||
|
|
||||||
from threading import Thread, Event
|
|
||||||
import itertools
|
import itertools
|
||||||
|
from threading import Thread, Event
|
||||||
|
|
||||||
from primes import is_prime
|
from primes import is_prime
|
||||||
|
|
||||||
@@ -25,7 +25,7 @@ def supervisor(n: int) -> int: # <1>
|
|||||||
done = Event() # <2>
|
done = Event() # <2>
|
||||||
spinner = Thread(target=spin,
|
spinner = Thread(target=spin,
|
||||||
args=('thinking!', done)) # <3>
|
args=('thinking!', done)) # <3>
|
||||||
print('spinner object:', spinner) # <4>
|
print(f'spinner object: {spinner}') # <4>
|
||||||
spinner.start() # <5>
|
spinner.start() # <5>
|
||||||
result = check(n) # <6>
|
result = check(n) # <6>
|
||||||
done.set() # <7>
|
done.set() # <7>
|
||||||
|
|||||||
@@ -5,12 +5,12 @@ threads.py: shows that Python threads are slower than
|
|||||||
sequential code for CPU-intensive work.
|
sequential code for CPU-intensive work.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
from queue import SimpleQueue
|
||||||
from time import perf_counter
|
from time import perf_counter
|
||||||
from typing import NamedTuple
|
from typing import NamedTuple
|
||||||
from threading import Thread
|
from threading import Thread
|
||||||
from queue import SimpleQueue
|
|
||||||
import sys
|
|
||||||
import os
|
|
||||||
|
|
||||||
from primes import is_prime, NUMBERS
|
from primes import is_prime, NUMBERS
|
||||||
|
|
||||||
@@ -58,8 +58,8 @@ def main() -> None:
|
|||||||
if jobs.empty(): # <8>
|
if jobs.empty(): # <8>
|
||||||
break
|
break
|
||||||
|
|
||||||
time = perf_counter() - t0
|
elapsed = perf_counter() - t0
|
||||||
print('Total time:', f'{time:0.2f}s')
|
print(f'Total time: {elapsed:.2f}s')
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
from time import perf_counter
|
|
||||||
from typing import List, NamedTuple
|
|
||||||
from threading import Thread
|
|
||||||
from queue import SimpleQueue
|
from queue import SimpleQueue
|
||||||
|
from time import perf_counter
|
||||||
|
from threading import Thread
|
||||||
|
from typing import List, NamedTuple
|
||||||
|
|
||||||
from primes import is_prime, NUMBERS
|
from primes import is_prime, NUMBERS
|
||||||
|
|
||||||
@@ -32,8 +32,8 @@ def main() -> None:
|
|||||||
label = 'P' if prime else ' '
|
label = 'P' if prime else ' '
|
||||||
print(f'{n:16} {label} {elapsed:9.6f}s')
|
print(f'{n:16} {label} {elapsed:9.6f}s')
|
||||||
|
|
||||||
time = perf_counter() - t0
|
elapsed = perf_counter() - t0
|
||||||
print('Total time:', f'{time:0.2f}s')
|
print(f'Total time: {elapsed:.2f}s')
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
|||||||
@@ -27,11 +27,11 @@ async def slow() -> int:
|
|||||||
# tag::SPINNER_ASYNC_START[]
|
# tag::SPINNER_ASYNC_START[]
|
||||||
def main() -> None: # <1>
|
def main() -> None: # <1>
|
||||||
result = asyncio.run(supervisor()) # <2>
|
result = asyncio.run(supervisor()) # <2>
|
||||||
print('Answer:', result)
|
print(f'Answer: {result}')
|
||||||
|
|
||||||
async def supervisor() -> int: # <3>
|
async def supervisor() -> int: # <3>
|
||||||
spinner = asyncio.create_task(spin('thinking!')) # <4>
|
spinner = asyncio.create_task(spin('thinking!')) # <4>
|
||||||
print('spinner object:', spinner) # <5>
|
print(f'spinner object: {spinner}') # <5>
|
||||||
result = await slow() # <6>
|
result = await slow() # <6>
|
||||||
spinner.cancel() # <7>
|
spinner.cancel() # <7>
|
||||||
return result
|
return result
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ async def slow() -> int:
|
|||||||
|
|
||||||
async def supervisor() -> int:
|
async def supervisor() -> int:
|
||||||
spinner = asyncio.create_task(spin('thinking!')) # <1>
|
spinner = asyncio.create_task(spin('thinking!')) # <1>
|
||||||
print('spinner object:', spinner) # <2>
|
print(f'spinner object: {spinner}') # <2>
|
||||||
result = await slow() # <3>
|
result = await slow() # <3>
|
||||||
spinner.cancel() # <5>
|
spinner.cancel() # <5>
|
||||||
return result
|
return result
|
||||||
@@ -33,7 +33,7 @@ async def supervisor() -> int:
|
|||||||
|
|
||||||
def main() -> None:
|
def main() -> None:
|
||||||
result = asyncio.run(supervisor())
|
result = asyncio.run(supervisor())
|
||||||
print('Answer:', result)
|
print(f'Answer: {result}')
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
|||||||
@@ -5,10 +5,10 @@
|
|||||||
# https://mail.python.org/pipermail/python-list/2009-February/675659.html
|
# https://mail.python.org/pipermail/python-list/2009-February/675659.html
|
||||||
|
|
||||||
# tag::SPINNER_PROC_IMPORTS[]
|
# tag::SPINNER_PROC_IMPORTS[]
|
||||||
from multiprocessing import Process, Event # <1>
|
|
||||||
from multiprocessing import synchronize # <2>
|
|
||||||
import itertools
|
import itertools
|
||||||
import time
|
import time
|
||||||
|
from multiprocessing import Process, Event # <1>
|
||||||
|
from multiprocessing import synchronize # <2>
|
||||||
|
|
||||||
def spin(msg: str, done: synchronize.Event) -> None: # <3>
|
def spin(msg: str, done: synchronize.Event) -> None: # <3>
|
||||||
# end::SPINNER_PROC_IMPORTS[]
|
# end::SPINNER_PROC_IMPORTS[]
|
||||||
@@ -29,7 +29,7 @@ def supervisor() -> int:
|
|||||||
done = Event()
|
done = Event()
|
||||||
spinner = Process(target=spin, # <4>
|
spinner = Process(target=spin, # <4>
|
||||||
args=('thinking!', done))
|
args=('thinking!', done))
|
||||||
print('spinner object:', spinner) # <5>
|
print(f'spinner object: {spinner}') # <5>
|
||||||
spinner.start()
|
spinner.start()
|
||||||
result = slow()
|
result = slow()
|
||||||
done.set()
|
done.set()
|
||||||
@@ -39,7 +39,7 @@ def supervisor() -> int:
|
|||||||
|
|
||||||
def main() -> None:
|
def main() -> None:
|
||||||
result = supervisor()
|
result = supervisor()
|
||||||
print('Answer:', result)
|
print(f'Answer: {result}')
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
|||||||
@@ -5,9 +5,9 @@
|
|||||||
# https://mail.python.org/pipermail/python-list/2009-February/675659.html
|
# https://mail.python.org/pipermail/python-list/2009-February/675659.html
|
||||||
|
|
||||||
# tag::SPINNER_THREAD_TOP[]
|
# tag::SPINNER_THREAD_TOP[]
|
||||||
from threading import Thread, Event
|
|
||||||
import itertools
|
import itertools
|
||||||
import time
|
import time
|
||||||
|
from threading import Thread, Event
|
||||||
|
|
||||||
def spin(msg: str, done: Event) -> None: # <1>
|
def spin(msg: str, done: Event) -> None: # <1>
|
||||||
for char in itertools.cycle(r'\|/-'): # <2>
|
for char in itertools.cycle(r'\|/-'): # <2>
|
||||||
@@ -26,9 +26,8 @@ def slow() -> int:
|
|||||||
# tag::SPINNER_THREAD_REST[]
|
# tag::SPINNER_THREAD_REST[]
|
||||||
def supervisor() -> int: # <1>
|
def supervisor() -> int: # <1>
|
||||||
done = Event() # <2>
|
done = Event() # <2>
|
||||||
spinner = Thread(target=spin,
|
spinner = Thread(target=spin, args=('thinking!', done)) # <3>
|
||||||
args=('thinking!', done)) # <3>
|
print(f'spinner object: {spinner}') # <4>
|
||||||
print('spinner object:', spinner) # <4>
|
|
||||||
spinner.start() # <5>
|
spinner.start() # <5>
|
||||||
result = slow() # <6>
|
result = slow() # <6>
|
||||||
done.set() # <7>
|
done.set() # <7>
|
||||||
@@ -37,7 +36,7 @@ def supervisor() -> int: # <1>
|
|||||||
|
|
||||||
def main() -> None:
|
def main() -> None:
|
||||||
result = supervisor() # <9>
|
result = supervisor() # <9>
|
||||||
print('Answer:', result)
|
print(f'Answer: {result}')
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
|||||||
Reference in New Issue
Block a user