39 lines
971 B
Python
39 lines
971 B
Python
"""
|
|
08_python_subport — tap a C++ node's output from Python using net.read().
|
|
|
|
Graph:
|
|
[ProduceNode] --int--> [DoubleItNode] --int--> (tapped by net.read())
|
|
|
|
The sink is Python: instead of connecting a PrintItNode, we call net.read()
|
|
to pull values out of DoubleItNode's output directly into Python.
|
|
We also demonstrate net.write() by injecting a value into DoubleItNode's input.
|
|
"""
|
|
|
|
import sys
|
|
import time
|
|
import threading
|
|
sys.path.insert(0, "build/python")
|
|
|
|
import kpn_python as kpn
|
|
|
|
net = kpn.Network()
|
|
|
|
net.add("src", kpn.make_produce())
|
|
net.add("dbl", kpn.make_double_it())
|
|
|
|
net.connect("src", 0, "dbl", 0)
|
|
net.build()
|
|
net.start()
|
|
|
|
# Collect a few values from DoubleItNode's output via Python tap
|
|
results = []
|
|
for _ in range(5):
|
|
val = net.read("dbl", 0)
|
|
results.append(val)
|
|
|
|
net.stop()
|
|
|
|
print("values read from C++ DoubleItNode output:", results)
|
|
assert all(v == 84 for v in results), f"expected all 84, got {results}"
|
|
print("all correct (42 * 2 = 84)")
|