cengal.parallel_execution.coroutines.coro_tools.terminate_tasks.versions.v_0.terminate_tasks
1#!/usr/bin/env python 2# coding=utf-8 3 4# Copyright © 2012-2024 ButenkoMS. All rights reserved. Contacts: <gtalk@butenkoms.space> 5# 6# Licensed under the Apache License, Version 2.0 (the "License"); 7# you may not use this file except in compliance with the License. 8# You may obtain a copy of the License at 9# 10# http://www.apache.org/licenses/LICENSE-2.0 11# 12# Unless required by applicable law or agreed to in writing, software 13# distributed under the License is distributed on an "AS IS" BASIS, 14# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15# See the License for the specific language governing permissions and 16# limitations under the License. 17 18 19__all__ = [ 20 'aterminate_tasks_explicit', 21 'aterminate_tasks_implicit', 22 'aterminate_tasks', 23 'aterminate_tasks_im', 24 'terminate_tasks_explicit', 25 'terminate_tasks_implicit', 26 'terminate_tasks', 27 'terminate_tasks_im', 28] 29 30 31""" 32Module Docstring 33Docstrings: http://www.python.org/dev/peps/pep-0257/ 34""" 35 36__author__ = "ButenkoMS <gtalk@butenkoms.space>" 37__copyright__ = "Copyright © 2012-2024 ButenkoMS. All rights reserved. Contacts: <gtalk@butenkoms.space>" 38__credits__ = ["ButenkoMS <gtalk@butenkoms.space>", ] 39__license__ = "Apache License, Version 2.0" 40__version__ = "4.4.1" 41__maintainer__ = "ButenkoMS <gtalk@butenkoms.space>" 42__email__ = "gtalk@butenkoms.space" 43# __status__ = "Prototype" 44__status__ = "Development" 45# __status__ = "Production" 46 47 48from cengal.parallel_execution.coroutines.coro_scheduler import Interface, current_interface 49from cengal.parallel_execution.coroutines.coro_standard_services.put_coro import Task 50from cengal.parallel_execution.coroutines.coro_standard_services.put_coro_list import PutCoroList, PSCP 51from cengal.parallel_execution.coroutines.coro_standard_services.run_coro import RunCoro 52from cengal.parallel_execution.coroutines.coro_standard_services.kill_coro_list import KillCoroList, KillSingleCoroParams 53from cengal.parallel_execution.coroutines.coro_tools.wait_tasks import GracefulTerminationSettings, \ 54 atask_graceful_destroyer, await_tasks_explicit 55 56from typing import Optional, List, Callable 57 58 59async def aterminate_tasks_explicit( 60 i: Interface, 61 tasks: List[Task], 62 tree: bool = False, 63 graceful_termination_settings: Optional[GracefulTerminationSettings] = None, 64 wait_for_termination: bool = False, 65 ) -> bool: 66 if not tasks: 67 return False 68 69 if graceful_termination_settings is None: 70 termination_tasks_params: List[KillSingleCoroParams] = list([KillSingleCoroParams(task.coro_id, tree) for task in tasks if not task.done]) 71 if not termination_tasks_params: 72 return False 73 74 i(KillCoroList, termination_tasks) 75 else: 76 termination_tasks_params: List[PSCP] = [PSCP(atask_graceful_destroyer, task, tree, graceful_termination_settings) for task in tasks if not task.done] 77 if not termination_tasks_params: 78 return False 79 80 termination_tasks: List[Task] = await i(PutCoroList, termination_tasks_params, True) 81 if wait_for_termination: 82 await await_tasks_explicit(i, termination_tasks, False, None, None, False, False, False, False) 83 84 return True 85 86 87async def aterminate_tasks_implicit( 88 tasks: List[Task], 89 tree: bool = False, 90 graceful_termination_settings: Optional[GracefulTerminationSettings] = None, 91 wait_for_termination: bool = False, 92 ) -> bool: 93 i: Interface = current_interface() 94 return await aterminate_tasks_explicit( 95 i, 96 tasks, 97 tree, 98 graceful_termination_settings, 99 wait_for_termination, 100 ) 101 102 103aterminate_tasks: Callable = aterminate_tasks_explicit 104aterminate_tasks_im: Callable = aterminate_tasks_implicit 105 106 107def terminate_tasks_explicit( 108 i: Interface, 109 tasks: List[Task], 110 tree: bool = False, 111 graceful_termination_settings: Optional[GracefulTerminationSettings] = None, 112 wait_for_termination: bool = False, 113 ) -> bool: 114 i(RunCoro, aterminate_tasks_explicit, 115 tasks, 116 tree, 117 graceful_termination_settings, 118 wait_for_termination, 119 ) 120 121 122def terminate_tasks_implicit( 123 tasks: List[Task], 124 tree: bool = False, 125 graceful_termination_settings: Optional[GracefulTerminationSettings] = None, 126 wait_for_termination: bool = False, 127 ) -> bool: 128 i: Interface = current_interface() 129 return terminate_tasks_explicit( 130 i, 131 tasks, 132 tree, 133 graceful_termination_settings, 134 wait_for_termination, 135 ) 136 137 138terminate_tasks: Callable = terminate_tasks_explicit 139terminate_tasks_im: Callable = terminate_tasks_implicit
async def
aterminate_tasks_explicit( i: cengal.parallel_execution.coroutines.coro_scheduler.versions.v_0.coro_scheduler.Interface, tasks: List[cengal.parallel_execution.coroutines.coro_standard_services.put_coro.versions.v_0.put_coro.Task], tree: bool = False, graceful_termination_settings: Union[cengal.parallel_execution.coroutines.coro_tools.wait_tasks.versions.v_0.wait_tasks.GracefulTerminationSettings, NoneType] = None, wait_for_termination: bool = False) -> bool:
60async def aterminate_tasks_explicit( 61 i: Interface, 62 tasks: List[Task], 63 tree: bool = False, 64 graceful_termination_settings: Optional[GracefulTerminationSettings] = None, 65 wait_for_termination: bool = False, 66 ) -> bool: 67 if not tasks: 68 return False 69 70 if graceful_termination_settings is None: 71 termination_tasks_params: List[KillSingleCoroParams] = list([KillSingleCoroParams(task.coro_id, tree) for task in tasks if not task.done]) 72 if not termination_tasks_params: 73 return False 74 75 i(KillCoroList, termination_tasks) 76 else: 77 termination_tasks_params: List[PSCP] = [PSCP(atask_graceful_destroyer, task, tree, graceful_termination_settings) for task in tasks if not task.done] 78 if not termination_tasks_params: 79 return False 80 81 termination_tasks: List[Task] = await i(PutCoroList, termination_tasks_params, True) 82 if wait_for_termination: 83 await await_tasks_explicit(i, termination_tasks, False, None, None, False, False, False, False) 84 85 return True
async def
aterminate_tasks_implicit( tasks: List[cengal.parallel_execution.coroutines.coro_standard_services.put_coro.versions.v_0.put_coro.Task], tree: bool = False, graceful_termination_settings: Union[cengal.parallel_execution.coroutines.coro_tools.wait_tasks.versions.v_0.wait_tasks.GracefulTerminationSettings, NoneType] = None, wait_for_termination: bool = False) -> bool:
88async def aterminate_tasks_implicit( 89 tasks: List[Task], 90 tree: bool = False, 91 graceful_termination_settings: Optional[GracefulTerminationSettings] = None, 92 wait_for_termination: bool = False, 93 ) -> bool: 94 i: Interface = current_interface() 95 return await aterminate_tasks_explicit( 96 i, 97 tasks, 98 tree, 99 graceful_termination_settings, 100 wait_for_termination, 101 )
async def
aterminate_tasks( i: cengal.parallel_execution.coroutines.coro_scheduler.versions.v_0.coro_scheduler.Interface, tasks: List[cengal.parallel_execution.coroutines.coro_standard_services.put_coro.versions.v_0.put_coro.Task], tree: bool = False, graceful_termination_settings: Union[cengal.parallel_execution.coroutines.coro_tools.wait_tasks.versions.v_0.wait_tasks.GracefulTerminationSettings, NoneType] = None, wait_for_termination: bool = False) -> bool:
60async def aterminate_tasks_explicit( 61 i: Interface, 62 tasks: List[Task], 63 tree: bool = False, 64 graceful_termination_settings: Optional[GracefulTerminationSettings] = None, 65 wait_for_termination: bool = False, 66 ) -> bool: 67 if not tasks: 68 return False 69 70 if graceful_termination_settings is None: 71 termination_tasks_params: List[KillSingleCoroParams] = list([KillSingleCoroParams(task.coro_id, tree) for task in tasks if not task.done]) 72 if not termination_tasks_params: 73 return False 74 75 i(KillCoroList, termination_tasks) 76 else: 77 termination_tasks_params: List[PSCP] = [PSCP(atask_graceful_destroyer, task, tree, graceful_termination_settings) for task in tasks if not task.done] 78 if not termination_tasks_params: 79 return False 80 81 termination_tasks: List[Task] = await i(PutCoroList, termination_tasks_params, True) 82 if wait_for_termination: 83 await await_tasks_explicit(i, termination_tasks, False, None, None, False, False, False, False) 84 85 return True
async def
aterminate_tasks_im( tasks: List[cengal.parallel_execution.coroutines.coro_standard_services.put_coro.versions.v_0.put_coro.Task], tree: bool = False, graceful_termination_settings: Union[cengal.parallel_execution.coroutines.coro_tools.wait_tasks.versions.v_0.wait_tasks.GracefulTerminationSettings, NoneType] = None, wait_for_termination: bool = False) -> bool:
88async def aterminate_tasks_implicit( 89 tasks: List[Task], 90 tree: bool = False, 91 graceful_termination_settings: Optional[GracefulTerminationSettings] = None, 92 wait_for_termination: bool = False, 93 ) -> bool: 94 i: Interface = current_interface() 95 return await aterminate_tasks_explicit( 96 i, 97 tasks, 98 tree, 99 graceful_termination_settings, 100 wait_for_termination, 101 )
def
terminate_tasks_explicit( i: cengal.parallel_execution.coroutines.coro_scheduler.versions.v_0.coro_scheduler.Interface, tasks: List[cengal.parallel_execution.coroutines.coro_standard_services.put_coro.versions.v_0.put_coro.Task], tree: bool = False, graceful_termination_settings: Union[cengal.parallel_execution.coroutines.coro_tools.wait_tasks.versions.v_0.wait_tasks.GracefulTerminationSettings, NoneType] = None, wait_for_termination: bool = False) -> bool:
108def terminate_tasks_explicit( 109 i: Interface, 110 tasks: List[Task], 111 tree: bool = False, 112 graceful_termination_settings: Optional[GracefulTerminationSettings] = None, 113 wait_for_termination: bool = False, 114 ) -> bool: 115 i(RunCoro, aterminate_tasks_explicit, 116 tasks, 117 tree, 118 graceful_termination_settings, 119 wait_for_termination, 120 )
def
terminate_tasks_implicit( tasks: List[cengal.parallel_execution.coroutines.coro_standard_services.put_coro.versions.v_0.put_coro.Task], tree: bool = False, graceful_termination_settings: Union[cengal.parallel_execution.coroutines.coro_tools.wait_tasks.versions.v_0.wait_tasks.GracefulTerminationSettings, NoneType] = None, wait_for_termination: bool = False) -> bool:
123def terminate_tasks_implicit( 124 tasks: List[Task], 125 tree: bool = False, 126 graceful_termination_settings: Optional[GracefulTerminationSettings] = None, 127 wait_for_termination: bool = False, 128 ) -> bool: 129 i: Interface = current_interface() 130 return terminate_tasks_explicit( 131 i, 132 tasks, 133 tree, 134 graceful_termination_settings, 135 wait_for_termination, 136 )
def
terminate_tasks( i: cengal.parallel_execution.coroutines.coro_scheduler.versions.v_0.coro_scheduler.Interface, tasks: List[cengal.parallel_execution.coroutines.coro_standard_services.put_coro.versions.v_0.put_coro.Task], tree: bool = False, graceful_termination_settings: Union[cengal.parallel_execution.coroutines.coro_tools.wait_tasks.versions.v_0.wait_tasks.GracefulTerminationSettings, NoneType] = None, wait_for_termination: bool = False) -> bool:
108def terminate_tasks_explicit( 109 i: Interface, 110 tasks: List[Task], 111 tree: bool = False, 112 graceful_termination_settings: Optional[GracefulTerminationSettings] = None, 113 wait_for_termination: bool = False, 114 ) -> bool: 115 i(RunCoro, aterminate_tasks_explicit, 116 tasks, 117 tree, 118 graceful_termination_settings, 119 wait_for_termination, 120 )
def
terminate_tasks_im( tasks: List[cengal.parallel_execution.coroutines.coro_standard_services.put_coro.versions.v_0.put_coro.Task], tree: bool = False, graceful_termination_settings: Union[cengal.parallel_execution.coroutines.coro_tools.wait_tasks.versions.v_0.wait_tasks.GracefulTerminationSettings, NoneType] = None, wait_for_termination: bool = False) -> bool:
123def terminate_tasks_implicit( 124 tasks: List[Task], 125 tree: bool = False, 126 graceful_termination_settings: Optional[GracefulTerminationSettings] = None, 127 wait_for_termination: bool = False, 128 ) -> bool: 129 i: Interface = current_interface() 130 return terminate_tasks_explicit( 131 i, 132 tasks, 133 tree, 134 graceful_termination_settings, 135 wait_for_termination, 136 )