Разработать подсистему управления процессами с невытесняющей многозадачностью на языке программирования python и в виде окошка программы
Так а как помочь, какой вопрос?
Или вы просто заданием хвастаетесь?)
Вообще было уже: Разработка подсистемы управления процессами с невытесняющей многозадачностью
да,но проблему не решил,а код нужен(
Python. Лучшие практики и инструменты.
стр. 490
Кооперативная многозадачность и асинхронный ввод / вывод
с 493 страницы можно будет взять код и он будет верным?
Нет, можно почитать это, чтоб начать разбираться в теме и приступить к реализации своей задачи )
Ну и ссылки в предыдущей теме.
До конца семестра еще далеко
Не код будет верным.
А как сказали выше постом. Войдете в ТЕМУ. И поймете, Для Вас это, или нет.
мне просто чем раньше,тем лучше будет,долг ещё с прошлого семестра,летом к сожалению не было времени на учёбу
Так помочь то чем?
Готовый код именно под вашу конкретную задачу найти сложно будет.
Смотреть примеры в учебниках, в сети. Разобраться в теме и написать свой код.
Других вариантов не знаю.
времени просто мало осталось и надо к субботе,у меня всё готово,но код понять не могу как составить
И что готово тогда если кода нет?
Описание без кода не написать.
А если есть описание, тогда брать его как ТЗ и писать по нему код.
P. S.
Из книги по ссылке, за неделю можно было главу перечитать как минимум семь раз. И начать писать код… И вопросы уже были бы по существу.
Побороть лень просто нужно наверное.
не в лени дело,просто сроки сдачи поджимают,поэтому и обратился сюда,а летом из-за работы и подобного не было времени на код
Дык а толку “обращаться” и не пытаться хоть что-то делать? Шанс получить халявное решение есть для простых задач на 5 минут, а для такого только советы куда копать, ответы на конкретные вопросы и т.п.
Получить готовое решение можно если найти кого-нибудь за деньги на фриланс-биржах и т.д., но за 2 дня конечно уже вряд ли получится, разве что среди однокурсников.
print('Модель подсистемы управления процессами с невытесняющей многозадачностью')
print('prod. by ALEX')
desc_list = []
def CreateProc(quant):
description = {
'id': len(desc_list),
'quant': quant
}
desc_list.append(description)
def start():
print('start')
max_quant = 0
flag = 0
for x in desc_list:
if x['quant'] > max_quant:
max_quant = x['quant']
print('Количество квантов ', max_quant)
while flag - 1 != max_quant:
flag+=1
print('__________ИТЕРАЦИЯ №',flag,'__________')
for x in desc_list:
x['quant'] -= 1
print('Выполнение процесса №', x['id'], 'Осталось квантов - ', x['quant'])
if x['quant'] == 0:
print('до удаления', desc_list)
desc_list.remove(x)
print('Удаляем', x)
print('После удаления', desc_list)
#print('Процесс №', x['id'], ' завершен')
print('_______________________________')
while True:
command = input('>>> ')
if command == 'add':
quant = input('Введите квант >>> ')
CreateProc(int(quant))
if command == 'desc_list':
for x in desc_list:
print(x)
if command == 'start':
start()
у меня вот есть с вытесняющей многозадачностью,но вот что с невытесняющий делать хз,точнее как из этого,переделать под неё
Невытесняющая это если процесс сам решает когда передать управление другим (например, после завершения какой-то подзадачи).
Как это показать тут я чот хз, какой-то слишком простой пример )
Я бы наверно делал, чтоб процессы выполняли какую-то более конкретную работу (считали что-то, …), и тогда в определенных местах функции делающей эту работу вызывал бы передачу управления другим.
Как примитивный вариант наверно можно в описание процесса
добавить свойства
- на каком он сейчас кванте своей работы (изначально 0)
- список номеров квантов, на которых он будет передавать управление
и гонять это в бесконечном цикле пока все не завершатся.
просто как я понял,это ещё ± правильный вариант,ибо прошлый был неверный и вообще не в ту степь.грубо говоря,нужно сделать цикл,который будет всё прогонять до завершения процесса,но как это оформить,вот с чем затрудняюсь
можешь помочь с этим?
Да вот же примитивный пример из учебника. Работы на 15 минут вместе с чтением главы.
Не вытесняющая многозадачность
# Non-crowding multitasking
import time
import random
import asyncio
async def waiter(name):
for _ in range(4):
time_to_sleep = random.randint(1, 3) / 4
time.sleep(time_to_sleep)
print(
"{} waited {} seconds"
"".format(name, time_to_sleep)
)
async def main():
await asyncio.wait([waiter("first"), waiter("second")])
if __name__ == "__main__":
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
loop.close()
Вытесняющая многозадачность
# Pre-supplanting multitasking
import time
import random
import asyncio
async def waiter(name):
for _ in range(4):
time_to_sleep = random.randint(1, 3) / 4
await asyncio.sleep(time_to_sleep)
print(
"{} waited {} seconds"
"".format(name, time_to_sleep)
)
async def main():
await asyncio.wait([waiter("first"), waiter("second")])
if __name__ == "__main__":
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
loop.close()
Выше ж написано что можно сделать в том примере
(первое свойство можно не добавлять если отнимать от quant
как в примере было)
Чот не похоже.
Имеется в виду, что ожидание считать работой? (если нет, то тогда тут вообще ничего нет)
Для наглядности ставим паузу 5 сек time_to_sleep = 5
, и видим, что оба процесса завершают ожидание одновременно, то есть никто никого не блокирует.
Вообще тут просто сравнение синхронного и асинхронного ожидания.
Тогда уж скорее первый пример невытесняющий:
second waited 3 seconds
second waited 3 seconds
second waited 3 seconds
second waited 3 seconds
first waited 3 seconds
first waited 3 seconds
first waited 3 seconds
first waited 3 seconds
но получается совсем уж примитивно, один процесс тупо ждет полного завершения другого, никто никогда не передает управление.