-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.py
47 lines (29 loc) · 1.4 KB
/
main.py
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
from time import perf_counter
from multiprocessing import cpu_count
from app.facade import create_people_facade
from app.infra.db.postgresql.database.challenge import PersonRepository
from app.usecases import DbCreatePerson
from app.infra.native.multiprocessing import MultiProcessManager
from app.infra.native.threads import MultiThreadManager
from app.util import generate_people_random_data
def main():
num_records = 1000000
print(f'Gerando {num_records} de seeds')
total_records = generate_people_random_data(num_records)
start_time = perf_counter()
print('Iniciando com MultiProcessManager')
multi_process_manager = MultiProcessManager(cpu_count(), 100_000)
multi_process_manager.exec_in_batches(total_records, create_people_facade)
end_time = perf_counter()
execution_time = end_time - start_time
print(f"Tempo de execução: {execution_time} segundos via MultiProcessManager")
###
start_time = perf_counter()
print('Iniciando com MultiThreadManager')
multi_process_manager = MultiThreadManager(cpu_count() * 4, 10_000)
multi_process_manager.exec_in_batches(total_records, DbCreatePerson(PersonRepository().batch_insert).create_many)
end_time = perf_counter()
execution_time = end_time - start_time
print(f"Tempo de execução: {execution_time} segundos via MultiThreadManager")
if __name__ == "__main__":
main()