2016-04-18 17 views
1

Ich versuche, Daten aus einer Eingabedatei zu lesen, und für jede Zeile führen Sie eine Aufgabe in einer While-Schleife. Das Problem ist, dass wenn ich den ersten Prozess erstelle - seine Schleife wird ausgeführt und gibt die Kontrolle nicht an die obige for-Schleife zurück. Unterm Strich gibt es keine Parallelität. Was mache ich falsch? HierPython für Schleife parallel

ist der entsprechende Code:

from multiprocessing import Process 


def work_line(list1Line,jobId): 
    while True: 
     print list1Line 
     tenant = list1Line[0] 
     module = list1Line[1] 
     endTime = int(time.time()) 
     startTime = endTime - startTimeDelta 
     generate(jobId, startTime, endTime, tenantServiceAddress, tenant, module) 
     print ("tenant {} will sleep for {} seconds").format(tenant,sleepBetweenLoops) 
     time.sleep(sleepBetweenLoops) 


def openFiles(): 
    file = open(CLOUD_INPUT_FILE, 'r') 
    lines = file.readlines() 
    file.close() 
    linesLen = len(lines) 
    processes = [] 

    for linesIndex in range(0, linesLen): 
     jobId = GenerateRandomID() 
     line = lines[linesIndex] 
     list1Line = line.split() 

     p = Process(target=work_line(list1Line,jobId)) 
     p.start() 
     processes.append(p) 
     print processes 

    for p in processes: 
     p.join() 


if __name__ == '__main__': 
    CLOUD_INPUT_FILE = r'C:\CF\input_file.txt' 
    tenantServiceAddress = 'address.address' 
    startTimeDelta = 300 
    sleepBetweenLoops = 1800 
    print multiprocessing.cpu_count() 
    openFiles() 

Antwort

2

Sie rufen tatsächlich die Funktion. Wechseln Sie zu