
duda para procesar el mismo fichero en paralelo
Publicado por Capi (1 intervención) el 02/08/2016 11:57:40
Buenas, me encuentro programando una función que quiero que procese una serie de archivos en una carpeta.
La cosa es que tarda mucho y entonces voy a llamar a la función varias veces para hacerlo más rápido.
Pero el problema es que si por ejemplo la llamo dos veces, las funciones entran en conflicto porque "pelean" por el mismo archivo, por lo que me da error.
Lo que a mi me gustaría es que la función vea qué esta trabajando con el archivo X y la otra diga "guay, pues me voy a trabajar con el X+1"
adjunto la función.
La cosa es que tarda mucho y entonces voy a llamar a la función varias veces para hacerlo más rápido.
Pero el problema es que si por ejemplo la llamo dos veces, las funciones entran en conflicto porque "pelean" por el mismo archivo, por lo que me da error.
Lo que a mi me gustaría es que la función vea qué esta trabajando con el archivo X y la otra diga "guay, pues me voy a trabajar con el X+1"
adjunto la función.
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
def Task2(a,a1):
condition= bool
for root, dirs, files in os.walk(a + "/" + a1[0]):
for file in files:
if file.find("tmp") != -1 or file.find("coded") != -1:#look for files in rec/iq
#print("find")
filess=[]
filess.append(file)
for i in range(len(filess)):
temp = (filess[i].split(".")[0]).split("_")
print("test", temp)
#check if in rec/monitor is the block file
if os.path.exists(a + "/" + a1[4] + "/" + file.split(".")[0] + "_monitor.npy") \
or os.path.exists(a + "/" + a1[4] + "/" + file.split(".")[0] + "_monitor_blocked.npy"):
condition=True
delete(filess[i],condition,a, a1)
else:
condition=False
temp = (filess[i+1].split(".")[0]).split("_")
print("test", temp)
process(temp,condition, a,a1)
condition=True
delete(file, condition, a,a1)
return print ("exito")
def delete(file, condition, a, a1):
splittingfile = file.split("_")
if condition==True:
os.remove(a + path_separator + a1[0] + path_separator + splittingfile[0] + "_" + splittingfile[1]) # remove iq file
# copy and rename as finisher file
if os.path.exists(a + "/" + a1[4] + "/" + file.split(".")[0] + "_monitor_blocked.npy") == True:
shutil.copy(a + "/" + a1[4] + "/" + file.split(".")[0] + "_monitor_blocked.npy",
(a + "/" + a1[4] + "/" + file.split(".")[0] + "_monitor.npy"))
# remove _monitor_blocker.npy
os.remove(a + "/" + a1[4] + "/" + file.split(".")[0] + "_monitor_blocked.npy", )
#os.remove(a + path_separator + a1[1] + path_separator + temp[0] + "_" + temp[1] + ".npy")
# remove the sdrmeta data file
return
def process(temp, condition, a, a1):
if condition==False:
np.save(a + "/" + a1[4] + "/" + temp[0] + "_" + temp[1] + "_monitor_blocked.npy",
a + "/" + a1[4] + "/" + temp[0] + "_" + temp[1] + "_monitor.npy")
print("guardado")
time.sleep(5)
# test1 = np.memmap(a + path_separator + a1[0] + path_separator + splittingfile[0] + "_" + splittingfile[1])
# satsignal = monitor(a, a1, temp, test1)
# if len(satsignal[0]) == 0:
# satsignal = [0, 0] # really, nooothing was found :(
return
def folders(folder, subfolders ):
print("you are using", platform.system(), platform.release(), os.name)
if not os.path.exists(folder):
os.makedirs(folder)
if os.path.exists(folder):
for i in range(len(subfolders)):
if not os.path.exists(folder + path_separator + subfolders[i]):
os.makedirs(folder + path_separator + subfolders[i])
tiempo_inicial= time.time()
p1= Process(target= Task2, args =(folder, subfolders))
p2 = Process(target=Task2, args=(folder, subfolders))
p1.start()
p2.start()
p1.join()
p2.join()
tiempo_final= time.time ()
tiempo_ejecucion= tiempo_final - tiempo_inicial
print(tiempo_ejecucion)
Valora esta pregunta


0