File: multiprocessing_test.py

package info (click to toggle)
scalene 1.5.51-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 15,528 kB
  • sloc: cpp: 22,930; python: 13,403; javascript: 11,769; ansic: 817; makefile: 196; sh: 45
file content (51 lines) | stat: -rwxr-xr-x 1,539 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
import logging
import multiprocessing
from time import sleep, perf_counter
# import faulthandler
# faulthandler.enable()
# import signal
# import os
# multiprocessing.log_to_stderr(logging.DEBUG)
# from multiprocessing.spawn import spawn_main
# import scalene.replacement_pjoin
# Stolen from https://stackoverflow.com/questions/15347174/python-finding-prime-factors

class Integer(object):
    def __init__(self, x):
        self.x = x

def largest_prime_factor(n):
    for i in range(10):
        x = [Integer(i * i) for i in range(80000)]
        # sleep(1)
        a = x[50]
        print("\033[91mprogress ", n, i, a.x, '\033[0m')
    print("Done")

# range_obj = range (65535588555555555, 65535588555555557)
range_obj = range(4)
if __name__ == "__main__":
    # import __main__
    # x = [largest_prime_factor(i) for i in range_obj]
    t0 = perf_counter()
    handles = [multiprocessing.Process(target=largest_prime_factor, args=(i,)) for i in range_obj]
    # handles = [multiprocessing.Process(target=largest_prime_factor, args=(1000000181,))]
    
    for handle in handles:
        print("Starting", handle)
        handle.start()
    # multiprocessing.popen_fork.Popen
    
    # try:
    for handle in handles:
        print("Joining", handle)
        handle.join()
    # except KeyboardInterrupt:
    #     for handle in handles:
    #         try:
    #             os.kill(handle.pid, signal.SIGSEGV)
    #         except:
    #             pass
    #     exit(1)
    dt = perf_counter() - t0
    print(f"Total time: {dt}")