Как установить модули Python в подсистему Windows для Linux? - PullRequest
0 голосов
/ 13 июля 2020

Я использовал код Visual Studio в Windows, чтобы написать ряд Python скриптов, которые выполняют сточасти c симуляции 3-х биологических систем. Всего у меня 6 Python скриптов, каждая биологическая система имеет скрипт, который имитирует систему 5 раз параллельно, используя библиотеку многопроцессорной обработки Python, и другой скрипт, который имитирует систему 5 раз последовательно.

Однако выполнение сценариев с использованием кода Visual Studio в Windows приводит к тому, что последовательные сценарии всегда работают быстрее (не то, что я хочу).

Было высказано предположение, что накладные расходы на настройку параллельных процессов в среде IDE могут были моей проблемой. Итак, я запускал сценарии в Windows powershell, но последовательные сценарии все еще были быстрее.

Первый вопрос: Существуют ли какие-либо известные проблемы с запуском параллельного моделирования в Windows, которые могли бы объяснить почему последовательные сценарии постоянно быстрее?

Сейчас я пытаюсь запустить сценарии, используя подсистему Windows для Linux. Скрипты используют довольно много импорта, включая numpy, scipy, datetime и multiprocessing. Только когда я запускаю здесь скрипты, я получаю следующую ошибку:

ModuleNotFoundError: No module named 'numpy'

Второй вопрос: Как мне установить все соответствующие модули и импорт для запуска моих Python скриптов в Windows подсистема для Linux.

Ниже приведен код для последовательных и параллельных процессов, если это помогает:

Последовательный:

def repeat_func(times, start_state, LHS, stoch_rate, state_change_array):
    """ Function to call and run other functions multiple times """
    start = datetime.utcnow()
    for i in range(times): 
        popul_num_all, tao_all = gillespie_tau_leaping(start_state, LHS, stoch_rate, state_change_array) 
    end = datetime.utcnow()
    sim_time = end - start
    print("Simulation time:\n", sim_time)

Параллельный:

def parallel_func(v):
    gillespie_tau_leaping(start_state, LHS, stoch_rate, state_change_array)


if __name__ == '__main__':
    start = datetime.utcnow()
    with Pool() as p:  
        pool_results = p.map(parallel_func, [1, 2, 3, 4, 5])
    end = datetime.utcnow()
    sim_time = end - start
    print("Simulation time:\n", sim_time)

Ура.

1 Ответ

1 голос
/ 13 июля 2020

Вы можете установить модули с помощью pip (Python 2) или pip3 (Python 3). Я буду использовать pip3 в приведенных ниже примерах, но вы можете использовать pip вместо этого, если используете Python 2. Если вы не уверены, какая версия у вас установлена, вы можете попробовать which python в команде -line.

Чтобы установить pip3 (или pip), вы должны установить пакеты python -pip-whl или python3 -pip с помощью диспетчера пакетов в вашем дистрибутиве ( вы также можете скомпилировать его из исходников, но я отвлекся). Чтобы сделать это с помощью aptitude (менеджер пакетов в Ubuntu):

$ sudo apt install python3-pip # or 'python-pip-whl' if you're using Python 2

Затем, чтобы установить модуль с помощью pip,

$ pip3 install numpy

Если вы не уверены в названии пакет, вы можете искать его по имени или ключевым словам:

$ pip3 search numpy
$ pip3 search linear algebra

Если вам нужна помощь с pip, вы можете использовать встроенную справку:

$ pip3 help
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...