async_exec
本模块提供并行执行器, 及方便函数 io_bound
, cpu_bound
.
提示: 若需要代替, 建议使用 unsync
库.
ParallelExecutor 🔗
并行执行器.
Source code in src/graia/ariadne/util/async_exec.py
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 |
|
__init__ 🔗
__init__(
loop: Optional[AbstractEventLoop] = None,
max_thread: Optional[int] = None,
max_process: Optional[int] = None,
)
初始化并行执行器.
Parameters:
-
loop
(
AbstractEventLoop
) –要绑定的事件循环, 会自动获取当前事件循环. Defaults to None.
-
max_thread
(
int
) –最大线程数. Defaults to None.
-
max_process
(
int
) –最大进程数. Defaults to None.
max_thread
与 max_process
参数默认值请参阅 concurrent.futures
.
Source code in src/graia/ariadne/util/async_exec.py
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
|
bind_loop 🔗
bind_loop(loop: AbstractEventLoop)
绑定本实例到 loop.
Parameters:
-
loop
(
AbstractEventLoop
) –要绑定到的事件循环.
Source code in src/graia/ariadne/util/async_exec.py
77 78 79 80 81 82 83 |
|
close 🔗
close()
关闭实例的所有底层 Executor.
Source code in src/graia/ariadne/util/async_exec.py
91 92 93 94 |
|
get
classmethod
🔗
get(loop: Optional[AbstractEventLoop] = None) -> ParallelExecutor
获取 ParallelExecutor 实例
Parameters:
-
loop
(
AbstractEventLoop
) –查找的事件循环. Defaults to None.
Returns:
-
ParallelExecutor(
ParallelExecutor
) –找到的 / 新创建的 ParallelExecutor.
Source code in src/graia/ariadne/util/async_exec.py
62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
|
run_func
classmethod
🔗
run_func(name: str, module: str, args: tuple, kwargs: dict) -> Any
运行函数的实现
Parameters:
-
name
(
str
) –函数名 (qualname)
-
module
(
str
) –函数所在模块名 (module)
-
args
(
tuple
) –位置参数
-
kwargs
(
dict
) –关键字参数
Returns:
-
Any(
Any
) –底层函数的返回值
Source code in src/graia/ariadne/util/async_exec.py
96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 |
|
run_func_static
classmethod
🔗
run_func_static(func: Callable[..., R], args: tuple, kwargs: dict) -> R
调用一个静态函数 (会自动解包装已被 ParallelExecutor 包装过的函数)
Parameters:
Returns:
-
R(
R
) –底层函数的返回值
Source code in src/graia/ariadne/util/async_exec.py
112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 |
|
shutdown
classmethod
🔗
shutdown()
关闭本类的所有底层 Executor.
Source code in src/graia/ariadne/util/async_exec.py
85 86 87 88 89 |
|
to_process 🔗
to_process(
func: Callable[P, R], *args: P.args, **kwargs: P.kwargs
) -> Awaitable[R]
在进程中异步运行 func 函数. 需要先注册过才行.
Parameters:
-
func
(
Callable[P, R]
) –要调用的函数.
-
*args
(
P.args
) –附带的位置参数.
-
**kwargs
(
P.kwargs
) –附带的关键词参数.
Returns:
-
Awaitable[R]
–Future[R]: 返回结果. 需要被异步等待.
Source code in src/graia/ariadne/util/async_exec.py
147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 |
|
to_thread 🔗
to_thread(
func: Callable[P, R], *args: P.args, **kwargs: P.kwargs
) -> Awaitable[R]
在线程中异步运行 func 函数.
Parameters:
-
func
(
Callable[P, R]
) –要调用的函数.
-
*args
(
P.args
) –附带的位置参数.
-
**kwargs
(
P.kwargs
) –附带的关键词参数.
Returns:
-
Awaitable[R]
–Future[R]: 返回结果. 需要被异步等待.
Source code in src/graia/ariadne/util/async_exec.py
128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 |
|
IS_MAIN_PROCESS 🔗
IS_MAIN_PROCESS() -> bool
返回是否为主进程
Returns:
-
bool(
bool
) –是否为主进程
Source code in src/graia/ariadne/util/async_exec.py
16 17 18 19 20 21 22 |
|
cpu_bound 🔗
cpu_bound(func: Callable[P, R]) -> Callable[P, Awaitable[R]]
包装一个函数在进程中异步运行.
Parameters:
-
func
(
Callable[P, R]
) –要包装的函数
Returns:
Source code in src/graia/ariadne/util/async_exec.py
194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 |
|
io_bound 🔗
io_bound(func: Callable[P, R]) -> Callable[P, Awaitable[R]]
包装一个函数在线程中异步运行.
Parameters:
-
func
(
Callable[P, R]
) –要包装的函数
Returns:
Source code in src/graia/ariadne/util/async_exec.py
167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 |
|