Python + многопроцессорная обработка + VMware: процесс зависает - PullRequest
0 голосов
/ 09 декабря 2018

Попытка запустить простой тестовый скрипт на виртуальной машине Linux в VMware Workstation 15 в VSCode.Скрипт просто висит в рабочем пуле 'results = p.map (f, chunk)'.Не уверен, что я что-то пропустил, чтобы он работал на ВМ или Linux.Отлично работает в windows.

import multiprocessing as mp
import os
import time

def f(x):
    print('Doing: ' + str(x) + ' with process id:'+ str(os.getpid()) + '\n')
    return(x*x)

def main():
    start_time = time.time()
    id_list = range(100)
    chunksize = 2

    lock = mp.Lock()
    p = mp.Pool(chunksize)

    for i in range(0, len(id_list), chunksize):
        print(i)
        if (i + chunksize) > len(id_list):
            chunk = id_list[i:]
        else:
            chunk = id_list[i : i + chunksize]

        results = p.map(f, chunk)

        for j in range(len(results)):
            lock.acquire()
            try:
                print('The results is: ' + str(results[j]) + '\n')
            finally:
                lock.release()

    p.close()

    end_time = time.time()
    print(end_time - start_time)

if __name__ == "__main__":
    print("Starting")
    main()
    print("Done")
...