Entonces, lo que trato de hacer es leer una línea, hacer algunos cálculos con la información en esa línea, luego agregar el resultado a algún objeto global, pero parece que nunca puedo obtenerlo trabajar. Por ejemplo, la prueba siempre es 0 en el siguiente código. Sé que esto está mal, y he tratado de hacerlo de otras maneras, pero todavía no está funcionando.cambiando la variable global al multiprocesamiento en python
import multiprocessing as mp
File = 'HGDP_FinalReport_Forward.txt'
#short_file = open(File)
test = 0
def pro(temp_line):
global test
temp_line = temp_line.strip().split()
test = test + 1
return len(temp_line)
if __name__ == "__main__":
with open("HGDP_FinalReport_Forward.txt") as lines:
pool = mp.Pool(processes = 10)
t = pool.map(pro,lines.readlines())
Globals son generalmente una señal de que está haciendo algo mal. Aconsejo cambiar la forma en que funciona su programa para evitarlos: le ahorrará dolores de cabeza a largo plazo, y siempre hay una mejor manera. –
El objetivo del módulo de multiprocesamiento es que genera procesos secundarios en lugar de hilos en el mismo proceso, con todos los intercambios habituales. Lamentablemente, la documentación no explica en absoluto los sacrificios, suponiendo que ya los conozca. Si sigue todas las "Pautas de programación" en la documentación, puede salirse con la suya sin comprender, pero realmente debería aprender. – abarnert