Python + многопроцессорность + VMware: процесс зависает

Попытка запустить простой тестовый сценарий на виртуальной машине 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")

Где висит? В какой части кода?

zmbq 09.12.2018 21:59

Прямо в 'results = p.map (f, chunk)'

Mike0T7 09.12.2018 22:12
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
2
219
0

Другие вопросы по теме