Skip to content

concurrency examples #43

Open
Open
@amirreza8002

Description

@amirreza8002

hi.
so i know that you probably know this
but if there will be a 3rd edition, exapmles 19-13 and 19-12 (and other examples in chapter 19) need a rework.
e.g the mentioned examples actually fail to prove the point of multiprocessing being good for cpu bound work since the prime number example is done in less than a second
the perf_countr() actually shows 0.00
and 19-13 actually takes longer due to multiprocessing overhead

below is the result of running them on python 3.12.2 on a not very new xeon cpu with perf_counter()

python sequential.py 

Checking 20 numbers sequentially:
               2  P  0.000001s
 142702110479723  P  0.000002s
 299593572317531  P  0.000001s
3333333333333301  P  0.000001s
3333333333333333  P  0.000001s
3333335652092209  P  0.000001s
4444444444444423  P  0.000001s
4444444444444444     0.000001s
4444444488888889  P  0.000001s
5555553133149889  P  0.000001s
5555555555555503  P  0.000001s
5555555555555555  P  0.000001s
6666666666666666     0.000001s
6666666666666719  P  0.000001s
6666667141414921  P  0.000001s
7777777536340681  P  0.000001s
7777777777777753  P  0.000001s
7777777777777777  P  0.000001s
9999999999999917  P  0.000001s
9999999999999999  P  0.000001s
Total time: 0.00s
python procs.py 

Cheking 20 numbers with 16 processes:
               2  P  0.000035s
 142702110479723  P  0.000003s
 299593572317531  P  0.000002s
3333333333333301  P  0.000001s
3333333333333333  P  0.000001s
3333335652092209  P  0.000001s
4444444444444423  P  0.000001s
4444444444444444     0.000001s
4444444488888889  P  0.000001s
5555555555555503  P  0.000001s
5555555555555555  P  0.000001s
6666666666666666     0.000001s
6666666666666719  P  0.000001s
6666667141414921  P  0.000001s
7777777536340681  P  0.000001s
7777777777777753  P  0.000001s
7777777777777777  P  0.000001s
9999999999999917  P  0.000001s
9999999999999999  P  0.000001s
5555553133149889  P  0.000033s
20 checks in 0.02s

and this is the result using perf_counter_ns()

python sequential.py 

Checking 20 numbers sequentially:
               2  P 487.000000ns
 142702110479723  P 1047.000000ns
 299593572317531  P 500.000000ns
3333333333333301  P 320.000000ns
3333333333333333  P 295.000000ns
3333335652092209  P 279.000000ns
4444444444444423  P 214.000000ns
4444444444444444    296.000000ns
4444444488888889  P 215.000000ns
5555553133149889  P 200.000000ns
5555555555555503  P 222.000000ns
5555555555555555  P 247.000000ns
6666666666666666    290.000000ns
6666666666666719  P 196.000000ns
6666667141414921  P 227.000000ns
7777777536340681  P 202.000000ns
7777777777777753  P 202.000000ns
7777777777777777  P 202.000000ns
9999999999999917  P 202.000000ns
9999999999999999  P 202.000000ns
Total time: 118353.00ns
python procs.py 

Cheking 20 numbers with 16 processes:
               2  P 13804.000000ns
 142702110479723  P 2860.000000ns
 299593572317531  P 1762.000000ns
3333333333333301  P 1324.000000ns
3333333333333333  P 1270.000000ns
3333335652092209  P 1073.000000ns
4444444444444423  P 794.000000ns
4444444444444444    1200.000000ns
4444444488888889  P 810.000000ns
5555553133149889  P 890.000000ns
5555555555555503  P 753.000000ns
5555555555555555  P 995.000000ns
6666666666666666    925.000000ns
6666666666666719  P 813.000000ns
6666667141414921  P 678.000000ns
7777777536340681  P 763.000000ns
7777777777777753  P 703.000000ns
9999999999999917  P 941.000000ns
9999999999999999  P 740.000000ns
7777777777777777  P 26330.000000ns
20 checks in 18213477.00ns

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions