5 Commits

Author SHA1 Message Date
d5dd67b31d 🐛 fix from mypy import 2024-10-19 21:07:50 +08:00
1bf1380b63 🐛 fix uninit ctx 2024-10-14 23:27:06 +08:00
5d505d1c89 🐛 fix uninit ctx 2024-10-14 23:26:48 +08:00
9c50844195 🐛 remove debug output 2024-10-13 23:56:00 +08:00
e151a7af0c first commit 2024-10-13 17:28:37 +08:00
3 changed files with 27 additions and 5 deletions

View File

@@ -5,6 +5,11 @@ from magicoca.chan import Chan
class Context:
def __init__(self):
"""
main_chan: Chan[Any] = main to sub
sub_chan: Chan[Any] = sub to main
哪个进程发送用哪个
"""
self.main_chan: Chan[Any] = Chan[Any]() # main to sub
self.sub_chan: Chan[Any] = Chan[Any]() # sub to main

View File

@@ -1,17 +1,24 @@
from multiprocessing import Process as _Process
from typing import Callable, Any
from typing import TypeAlias
from croterline.context import Context
from croterline.utils import IsMainProcess
type ProcessFuncType = Callable[[tuple[Any, ...], dict[str, Any]], None]
ProcessFuncType: TypeAlias = Callable[[tuple[Any, ...], dict[str, Any]], None]
_current_ctx: "Context | None" = None # 注入当前进程上下文
class SubProcess:
def __init__(
self, name: str, func: ProcessFuncType, ctx: Context = Context, *args, **kwargs
self,
name: str,
func: ProcessFuncType,
ctx: Context = Context(),
*args,
**kwargs,
):
self.name = name
self.func = func

View File

@@ -5,6 +5,8 @@ from croterline.process import SubProcess, get_ctx
def p_func(*args, **kwargs):
print("Args", args)
print("Kwargs", kwargs)
i = 0
ctx = get_ctx()
while True:
@@ -15,10 +17,16 @@ def p_func(*args, **kwargs):
ctx.sub_chan << "end"
def p_func2(*args, **kwargs):
print("args: ", args)
print("kwargs: ", kwargs)
raise Exception("Test")
class TestSubProcess:
def test_run(self):
print("start")
sp = SubProcess("test", p_func, Context())
sp = SubProcess("test", p_func, Context(), 1, 2, 3, k1=1, k2=2)
sp.start()
while True:
@@ -30,5 +38,7 @@ class TestSubProcess:
print("finished")
sp.terminate()
def test_decorator(self):
pass
def test_input(self):
print("test_input")
sp = SubProcess("test2", p_func2, Context(), 1, 2, 3, host=1, port=2)
sp.start()