andreybold
@andreybold

Как правильно распараллелить задачи?

Есть скрип:
from re import T
import time
import json
import python.cpu as cpu
import python.system as system
import python.docker as docker

from multiprocessing import Pool

__sleeps = {
	'cpu_info': 1,
	'system_info': 1,
	'docker_info': 2,
}

def cpu_info():
	cpu_info = cpu.info()
	with open('./json/cpu.json', 'w') as file:
		json.dump(cpu_info, file)
	print('cpu_info')
	time.sleep(__sleeps['cpu_info'])

def system_info():
	system_info = system.info()
	with open('./json/system.json', 'w') as file:
		json.dump(system_info, file)
	print('system_info')
	time.sleep(__sleeps['system_info'])

def docker_info():
	docker_info = docker.info()
	with open('./json/docker.json', 'w') as file:
		json.dump(docker_info, file)
	print('docker_info')
	time.sleep(__sleeps['docker_info'])

with Pool(5) as pool:
	while True:
		pool.apply_async(cpu_info)
		pool.apply_async(system_info)
		pool.apply_async(docker_info)

И вот вопрос, что я делаю не так? Задача в том, чтобы каждая из этих трёх функций (cpu_info, system_info, docker_info) работала параллельно. По пока получается так, что первые две (cpu_info и system_info) работают «нормально», но потом начинает выполняться docker_info (самая долго выполняющаяся) и все остальные её всё равно ждут.

В целом с программированием я знаком достаточно хорошо (более 7 лет работы в вебе, как на бэке, так и на фронте). Но вот питон начал плотно изучать недавно (до этого были мелкие скриптики, которые и за программирование нельзя считать). И тут же потребовалось погрузиться в параллельные вычисления.
Пробовал и через asyncio (пример кода врядли смогу предоставить) и через multiprocessing. Но пока ничего не помогло.
  • Вопрос задан
  • 84 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы