forked from ChunelFeng/CGraph
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathT07-MultiPipeline.py
More file actions
56 lines (38 loc) · 1.34 KB
/
T07-MultiPipeline.py
File metadata and controls
56 lines (38 loc) · 1.34 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
"""
@Author: Chunel
@Contact: chunel@foxmail.com
@File: T07-MultiPipeline
@Time: 2025/4/1 23:37
@Desc:
"""
from PyCGraph import GPipeline, UThreadPoolConfig, UThreadPool
from MyGNode.MyNode1 import MyNode1
from MyGNode.MyNode2 import MyNode2
def async_pipeline_1(pipeline: GPipeline):
a, b, c, d = MyNode1(), MyNode2(), MyNode1(), MyNode2()
pipeline.registerGElement(a, set(), "node1A")
pipeline.registerGElement(b, {a}, "node1B")
pipeline.registerGElement(c, {a}, "node1C")
pipeline.registerGElement(d, {a}, "node1D")
return pipeline.asyncProcess(3)
def async_pipeline_2(pipeline: GPipeline):
a, b, c = MyNode1(), MyNode2(), MyNode1()
pipeline.registerGElement(a, set(), "node2A")
pipeline.registerGElement(b, {a}, "node2B")
pipeline.registerGElement(c, {b}, "node2C")
return pipeline.asyncProcess(5)
def tutorial_multi_pipeline():
pipeline1, pipeline2 = GPipeline(), GPipeline()
config = UThreadPoolConfig()
config.default_thread_size = 4
config.max_thread_size = 4
config.monitor_enable = False
pool = UThreadPool(True, config)
pipeline1.setSharedThreadPool(pool)
pipeline2.setSharedThreadPool(pool)
result1 = async_pipeline_1(pipeline1)
result2 = async_pipeline_2(pipeline2)
result1.wait()
result2.wait()
if __name__ == '__main__':
tutorial_multi_pipeline()