Repository navigation
Expand file tree
/
Copy pathPy.py
More file actions
96 lines (80 loc) · 2.21 KB
/
Copy pathPy.py
File metadata and controls
96 lines (80 loc) · 2.21 KB
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Thu Oct 11 19:32:07 2018
@author: qq
"""
from time import time, sleep
from threading import Thread
from multiprocessing import Process, Queue, Event
from queue import Empty
import math
class EscribirHilo (Thread):
def __init__ (self, input_q, output_q):
super(EscribirHilo, self).__init__(self)
self.input = input_q
self.output = output_q
self.end = Event()
def run (self):
factoresParallel(self.numero, self.ini, self.fin, self.res)
class factoresParallel (Process):
def __init__ (self, input_q, output_q):
super(factoresParallel, self).__init__(self)
self.input = input_q
self.output = output_q
self.end = Event()
def run (self):
while not self.end.isSet():
try:
parametros = self.input.get(True, 0.05)
numero = parametros[0]
ini = parametros[1]
fin = parametros[2]
res = []
factoresParallel(numero, ini, fin, res)
self.output.put(res)
except Empty:
continue
def join(self, timeout = None):
self.end.set()
super(Hilo,self).join(timeout)
def factoresParallel(numero, ini, fin, res):
for i in range(ini, fin):
if (numero % i == 0):
res.append(i)
return res
def factores(numero):
lista = []
for i in range(2, numero-1):
if (numero % i == 0):
lista.append(i)
return lista
def main():
numero = int(input("Dame un número:"))
output_q = Queue()
hilos = int(input("Cuantos procesos:"))
aux = math.ceil((numero/2)/hilos)
input_q = Queue()
resultado = []
listaHilos = []
a = time()
for i in range(hilos):
= 2+aux*i+i #
fin = ini+aux
print(ini,fin)
resHilo = []
resultado.append(resHilo)
input_q.put((numero, ini, fin))
listaHilos.append(Thread(target = factoresParallel, args = (input_q, output_q)))
listaHilos[i].start()
for i in range(hilos):
listaHilos[i].join()
print(output_q.get())
for
print(resultado)
b = time()
print(b-a)
#factoresParallel(numero, 2, numero, res)
#factores(numero)
if __name__ == '__main__':
main()