并行支持¶
原生 python 受限制于 全局解释器锁 (GIL),多线程并不会真正并行执行,在 Matx 中,我们提供了 matx.pmap 原语,提供了后台并行执行能力。
import matx
from typing import Any, List
def lower_impl(s: str) -> str:
return s.lower()
def MyParallelLower(inputs: List[str]) -> List[str]:
return matx.pmap(lower_impl, inputs)
p_lower = matx.script(MyParallelLower)
print(p_lower(["Hello"]))
正则表达式¶
Matx 内置了一个基于 PCRE 的高性能正则引擎,目前单独封装了接口,可以如下使用
import matx
from typing import Any, List
class Spliter:
def __init__(self) -> None:
self.regex: Any = matx.Regex(
r'(([\v\f\r\n]+)|(?<=[^?。;,!!?][?。;,!!?])(?=[^?。;,!!?]))')
def __call__(self, ss: str) -> List[str]:
return self.regex.split(ss)
spliter = matx.script(Spliter)()
print(spliter("hELLO \v WORLD"))