Skip to content

Commit cc30448

Browse files
Feature/update worker examples 3.3 (#7)
* added worker.start_processing and worker.stop_processing calls * added status calls for worker queues
1 parent 1834db7 commit cc30448

6 files changed

Lines changed: 62 additions & 65 deletions

File tree

.cuvis/log.cfg

Whitespace-only changes.

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
/.venv
2+
/.venv39
3+
/exit

EX05_recordSingleImages.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
import cuvis
88

9-
### default directories and files
9+
# default directories and files
1010
data_dir = None
1111
lib_dir = None
1212

@@ -29,7 +29,7 @@
2929
loc_output = os.path.join(os.getcwd(), "EX05_images")
3030

3131
# parameters
32-
loc_exptime = 100 #in ms
32+
loc_exptime = 100 # in ms
3333
loc_nimgs = 10
3434

3535

@@ -50,7 +50,7 @@ def run_example_recordSingleImage(
5050
acquisitionContext = cuvis.AcquisitionContext(calibration)
5151

5252
saveArgs = cuvis.SaveArgs(export_dir=recDir, allow_overwrite=True,
53-
allow_session_file=True)
53+
allow_session_file=True)
5454
cubeExporter = cuvis.CubeExporter(saveArgs)
5555

5656
while acquisitionContext.state == cuvis.HardwareState.Offline:

EX06_recordVideo.py

Lines changed: 17 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
import cuvis
88

99

10-
### default directories and files
10+
# default directories and files
1111
data_dir = None
1212
lib_dir = None
1313

@@ -30,7 +30,7 @@
3030
loc_output = os.path.join(os.getcwd(), "EX06_video")
3131

3232
# parameters
33-
loc_exptime = 100 #in ms
33+
loc_exptime = 100 # in ms
3434
loc_autoexp = False
3535
loc_fps = 2
3636

@@ -50,15 +50,15 @@ def run_example_recordVideo(userSettingsDir=loc_settings,
5050

5151
print("loading acquisition context...")
5252
acquisitionContext = cuvis.AcquisitionContext(calibration)
53-
session_info = cuvis.SessionData("video",0,0)
53+
session_info = cuvis.SessionData("video", 0, 0)
5454
acquisitionContext.session_info = session_info
5555

5656
print("prepare saving of measurements...")
5757
saveArgs = cuvis.SaveArgs(export_dir=recDir,
58-
allow_overwrite=True,
59-
allow_session_file=True,
60-
fps=fps,
61-
operation_mode=cuvis.OperationMode.Software)
58+
allow_overwrite=True,
59+
allow_session_file=True,
60+
fps=fps,
61+
operation_mode=cuvis.OperationMode.Software)
6262

6363
print("writing files to: {}".format(recDir))
6464
cubeExporter = cuvis.CubeExporter(saveArgs)
@@ -90,16 +90,12 @@ def run_example_recordVideo(userSettingsDir=loc_settings,
9090
acquisitionContext.set_continuous(True)
9191

9292
print("configuring worker...")
93-
workerSettings = cuvis.WorkerSettings(keep_out_of_sequence=False,
94-
poll_intervall=10,
95-
worker_count=0,
96-
hard_limit=10,
97-
soft_limit=10,
98-
can_drop=True)
93+
workerSettings = cuvis.WorkerSettings()
9994
worker = cuvis.Worker(workerSettings)
10095
worker.set_acquisition_context(acquisitionContext)
10196
worker.set_processing_context(processingContext)
10297
worker.set_exporter(cubeExporter)
98+
worker.start_processing()
10399

104100
print("recording...! (will stop after 2 minutes)")
105101
start = datetime.now()
@@ -111,20 +107,23 @@ def run_example_recordVideo(userSettingsDir=loc_settings,
111107
else:
112108
time.sleep(0.001)
113109

114-
workerContainer = worker.get_next_result(1000) #in ms
110+
workerContainer = worker.get_next_result(1000) # in ms
115111
if workerContainer.mesu.data is not None:
116112
print("current handle index: {}".format(
117113
workerContainer.mesu.session_info.sequence_number))
118-
if worker.queue_limits[1] == worker.queue_used:
119-
print("worker queue is full! Main() loop can not keep up!")
114+
115+
workerState = worker.state
116+
if workerState.resultsInQueue == worker.output_queue_limit:
117+
print("worker output queue is full! Main() loop can not keep up!")
120118
break
121-
if acquisitionContext.queue_size == acquisitionContext.queue_used:
119+
120+
if workerState.measurementsInQueue == worker.mandatory_queue_limit:
122121
print("acquisition queue is full! Worker can not keep up!")
123122
break
124123

125124
print("acquisition stopped...")
126125
acquisitionContext.set_continuous(False)
127-
126+
worker.stop_processing()
128127
cuvis.shutdown()
129128
print("finished.")
130129

EX06_recordVideo_async.py

Lines changed: 20 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,7 @@
77
import cuvis
88

99

10-
11-
### default directories and files
10+
# default directories and files
1211
data_dir = None
1312
lib_dir = None
1413

@@ -31,44 +30,45 @@
3130
loc_output = os.path.join(os.getcwd(), "EX06_video")
3231

3332
# parameters
34-
loc_exptime = 100 #in ms
33+
loc_exptime = 100 # in ms
3534
loc_autoexp = False
3635
loc_fps = 2
3736

3837

3938
async def state_changed_callback(state, component_states):
4039
print(f'camera is {state.name}')
4140

41+
4242
async def worker_collect_mesu_task(workerContainer: cuvis.WorkerResult):
4343
if workerContainer.mesu.data is not None:
44-
print("current handle index: {}".format(
45-
workerContainer.mesu.session_info.sequence_number))
44+
print("current handle index: {}".format(
45+
workerContainer.mesu.session_info.sequence_number))
4646

4747

4848
async def run_example_recordVideo(userSettingsDir=loc_settings,
49-
factoryDir=loc_factory,
50-
recDir=loc_output,
51-
exposure=loc_exptime,
52-
autoExp=loc_autoexp,
53-
fps=loc_fps):
49+
factoryDir=loc_factory,
50+
recDir=loc_output,
51+
exposure=loc_exptime,
52+
autoExp=loc_autoexp,
53+
fps=loc_fps):
5454
print("loading user settings...")
5555
cuvis.init(userSettingsDir)
5656
cuvis.set_log_level("info")
57-
57+
5858
print("loading calibration (factory)...")
5959
calibration = cuvis.Calibration(factoryDir)
6060

6161
print("loading acquisition context...")
6262
acquisitionContext = cuvis.AcquisitionContext(calibration)
63-
session_info = cuvis.SessionData('video',0,0)
63+
session_info = cuvis.SessionData('video', 0, 0)
6464
acquisitionContext.session_info = session_info
6565

6666
print("prepare saving of measurements...")
6767
saveArgs = cuvis.SaveArgs(export_dir=recDir,
68-
allow_overwrite=True,
69-
allow_session_file=True,
70-
fps=fps,
71-
operation_mode=cuvis.OperationMode.Software)
68+
allow_overwrite=True,
69+
allow_session_file=True,
70+
fps=fps,
71+
operation_mode=cuvis.OperationMode.Software)
7272

7373
print("writing files to: {}".format(recDir))
7474
cubeExporter = cuvis.CubeExporter(saveArgs)
@@ -102,12 +102,7 @@ async def run_example_recordVideo(userSettingsDir=loc_settings,
102102
await acquisitionContext.set_continuous_async(True)
103103

104104
print("configuring worker...")
105-
workerSettings = cuvis.WorkerSettings(keep_out_of_sequence=False,
106-
poll_intervall=10,
107-
worker_count=0,
108-
hard_limit=10,
109-
soft_limit=10,
110-
can_drop=True)
105+
workerSettings = cuvis.WorkerSettings()
111106
worker = cuvis.Worker(workerSettings)
112107
worker.set_acquisition_context(acquisitionContext)
113108
worker.set_processing_context(processingContext)
@@ -116,13 +111,14 @@ async def run_example_recordVideo(userSettingsDir=loc_settings,
116111
print("recording...! (will stop after 2 minutes)")
117112

118113
worker.register_worker_callback(worker_collect_mesu_task)
114+
worker.start_processing()
119115

120116
await a.sleep(2 * 60)
121117
worker.reset_worker_callback()
122118

123119
print("acquisition stopped...")
124120
await acquisitionContext.set_continuous_async(False)
125-
121+
worker.stop_processing()
126122
cuvis.shutdown()
127123
print("finished.")
128124

@@ -163,7 +159,7 @@ async def run_example_recordVideo(userSettingsDir=loc_settings,
163159
fps = int(fps)
164160

165161
a.run(run_example_recordVideo(userSettingsDir, factoryDir, recDir, exposure,
166-
autoExp, fps))
162+
autoExp, fps))
167163

168164
while 1:
169165
sys.exit(0)

EX07_recordVideoFromSessionFile.py

Lines changed: 19 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
import cuvis
88

9-
### default directories and files
9+
# default directories and files
1010
data_dir = None
1111
lib_dir = None
1212

@@ -30,7 +30,7 @@
3030
loc_output = os.path.join(os.getcwd(), "EX07_video")
3131

3232
# parameters
33-
loc_exptime = 100 #in ms
33+
loc_exptime = 100 # in ms
3434
loc_autoexp = False
3535
loc_fps = 2
3636

@@ -51,15 +51,15 @@ def run_example_recordVideoFromSessionFile(userSettingsDir=loc_settings,
5151
print("loading acquisition context...")
5252
acquisitionContext = cuvis.AcquisitionContext(session, simulate=True) #
5353
# using images from session file instead of camera
54-
session_info = cuvis.SessionData("video",0,0)
54+
session_info = cuvis.SessionData("video", 0, 0)
5555
acquisitionContext.session_info = session_info
5656

5757
print("prepare saving of measurements...")
5858
saveArgs = cuvis.SaveArgs(export_dir=recDir,
59-
allow_overwrite=True,
60-
allow_session_file=True,
61-
fps=fps,
62-
operation_mode=cuvis.OperationMode.Internal)
59+
allow_overwrite=True,
60+
allow_session_file=True,
61+
fps=fps,
62+
operation_mode=cuvis.OperationMode.Internal)
6363

6464
print("writing files to: {}".format(recDir))
6565
cubeExporter = cuvis.CubeExporter(saveArgs)
@@ -86,22 +86,18 @@ def run_example_recordVideoFromSessionFile(userSettingsDir=loc_settings,
8686

8787
print("initializing simulated hardware...")
8888
acquisitionContext.integration_time = exposure
89-
acquisitionContext.operation_mode =cuvis.OperationMode.Internal
89+
acquisitionContext.operation_mode = cuvis.OperationMode.Internal
9090
acquisitionContext.fps = fps
9191
acquisitionContext.auto_exp = autoExp
9292
acquisitionContext.set_continuous(True)
9393

9494
print("configuring worker...")
95-
workerSettings = cuvis.WorkerSettings(keep_out_of_sequence=False,
96-
poll_intervall=10,
97-
worker_count=0,
98-
hard_limit=10,
99-
soft_limit=10,
100-
can_drop=True)
95+
workerSettings = cuvis.WorkerSettings()
10196
worker = cuvis.Worker(workerSettings)
10297
worker.set_acquisition_context(acquisitionContext)
10398
worker.set_processing_context(processingContext)
10499
worker.set_exporter(cubeExporter)
100+
worker.start_processing()
105101

106102
print("recording...! (will stop after 2 minutes)")
107103
start = datetime.now()
@@ -113,20 +109,23 @@ def run_example_recordVideoFromSessionFile(userSettingsDir=loc_settings,
113109
else:
114110
time.sleep(0.001)
115111

116-
workerContainer = worker.get_next_result()
112+
workerContainer = worker.get_next_result(0)
117113
if workerContainer.mesu.data is not None:
118114
print("current handle index: {}".format(
119115
workerContainer.mesu.session_info.sequence_number))
120-
if worker.get_queue_limits()["soft_limit"] == worker.get_queue_used():
121-
print("worker queue is full! Main() loop can not keep up!")
116+
117+
workerState = worker.state
118+
if workerState.resultsInQueue == worker.output_queue_limit:
119+
print("worker output queue is full! Main() loop can not keep up!")
122120
break
123-
if acquisitionContext.queue_size == acquisitionContext.queue_used:
121+
122+
if workerState.measurementsInQueue == worker.mandatory_queue_limit:
124123
print("acquisition queue is full! Worker can not keep up!")
125124
break
126125

127126
print("acquisition stopped...")
128127
acquisitionContext.set_continuous(False)
129-
128+
worker.stop_processing()
130129
cuvis.shutdown()
131130
print("finished.")
132131

@@ -167,7 +166,7 @@ def run_example_recordVideoFromSessionFile(userSettingsDir=loc_settings,
167166
fps = int(fps)
168167

169168
run_example_recordVideoFromSessionFile(userSettingsDir, factoryDir, recDir, exposure,
170-
autoExp, fps)
169+
autoExp, fps)
171170

172171
while 1:
173172
sys.exit(0)

0 commit comments

Comments
 (0)