【问题标题】:python for loop in parallelpython for循环并行
【发布时间】:2016-08-10 04:51:00
【问题描述】:

我正在尝试从输入文件中读取数据,并在 while 循环中为每一行执行一项任务。问题是当我创建第一个进程时 - 它的循环正在执行并且没有将控制权返回给上述 for 循环。底线没有平行性。我做错了什么?

以下是相关代码:

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()

【问题讨论】:

    标签: python loops parallel-processing


    【解决方案1】:

    您实际上是在调用该函数。改为

    p = Process(target=work_line, args=(list1Line,jobId))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-03-17
      • 2014-08-05
      • 2019-01-31
      • 1970-01-01
      相关资源
      最近更新 更多