You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
• Suporta duas versões de paralelismo: multiprocessing (pgrepwc.py) e multithreading (pgrepwc_threads.py).
9
+
[pgrepwc.py]:
10
10
11
-
- O uso do pacote multiprocessing neste projeto permite-nos certificar que este funciona de maneira igualmente eficiente em Linux e Windows (algo impossibilitado pelo uso de os.fork(), visto que este não funciona em Windows).
• Realçamento dos números das linhas a verde e das correspondências a vermelho, em ambas versões do programa (disponível em ambos Linux e Windows).
13
+
• Opção "-h" que permite esconder o output.
14
14
15
-
• Uso de mecanismos de exclusão mútua (mutex lock) para assegurar que não se dão problemas de sincronização (e.g. escrita simultânea na mesma variável por parte de processos/threads diferentes) e que a exposição dos resultados por parte dos processos/threads se dá de maneira intercalada.
15
+
• Uso de mecanismos de memória partilhada para comunicar resultados de pesquisas/contagens ao
16
+
processo pai por parte dos processos-filho.
16
17
17
-
• Uso de expressões regulares para encontrar correspondências exatas da palavra especi-
18
-
ficada em situações que esta esteja isolada.
18
+
• Suporta paralelismo: multiprocessing.
19
19
20
-
• Estrutura robusta que permite aceder aos ficheiros-alvo sem ter que os carregar diretamente para a memória (especialmente útil para ficheiros de maiores dimensões).
20
+
• Realçamento dos números das linhas a verde e das correspondências a vermelho.
21
21
22
-
• Programação defensiva que permite que o programa não falhe quando um dos ficheiros referidos não é encontrado. Inclui também prevenção de repetição de procura em ficheiros, descartando ficheiros repetidos que possam ter sido introduzidos pelo utilizador.
22
+
• Uso de mecanismos de exclusão mútua (mutex lock) para assegurar que não se dão problemas de
23
+
sincronização (ex. escrita simultânea na mesma variável por parte de processos/threads diferentes)
24
+
e que a exposição dos resultados por parte dos processos/threads se dá de maneira intercalada.
23
25
24
-
• [pgrepwc.py] -> Uso de mecanismos de memória partilhada para comunicar resultados de pesquisas/contagens ao processo pai por parte dos processos-filho.
26
+
• Uso de expressões regulares para encontrar correspondências exatas da palavra especificada em
27
+
situações que esta se encontre isolada.
28
+
29
+
• Estrutura robusta que permite aceder aos ficheiros-alvo sem ter que os carregar diretamente para
30
+
a memória (especialmente útil para ficheiros de maiores dimensões).
31
+
32
+
• Programação defensiva que permite que o programa não falhe quando um dos ficheiros referidos não
33
+
é encontrado. Inclui também prevenção de repetição de procura em ficheiros, descartando ficheiros
34
+
repetidos que possam ter sido introduzidos pelo utilizador.
25
35
26
36
• Leitura de nomes dos ficheiros-alvo através de stdin ou como argumento.
27
37
38
+
• Processamento seguro do sinal SIGINT: ao ser recebido o sinal SIGINT, é necessária confirmação
39
+
para que o programa termine o processamento, de modo a evitar acidentes. Ao ser recebida
40
+
confirmação, a paragem de processamento é efectuada de maneira segura e não abrupta, assegurando-se
41
+
que todos os dados recolhidos até ao momento são corretamente apresentados e possivelmente
42
+
guardados (opção "-f").
43
+
44
+
• Código detalhadamente documentado.
45
+
46
+
[hpgrepwc.py]:
47
+
48
+
• Utilização: hpgrepwc <ficheiro>
49
+
50
+
• Realçamento de dados considerados mais importantes a verde, há excepção de quando o total de
51
+
bytes processado não corresponde a 100% (neste caso a percentagem do total de bytes processado
0 commit comments