Blender Modal Operator parallel processing

Personal notes

import bpy

class ModalTimerOperator(bpy.types.Operator):
	"""Operator which runs its self from a timer"""
	bl_idname = "wm.modal_timer_operator"
	bl_label = "Modal Timer Operator"
	loop_count = 0
	loop_fps = 1
	_timer = None
	i = 0

	def every_seconds(self):
		print("sub_"+str(self.i))
		self.i = self.i + 1
		
		return 1
			
	def modal(self, context, event):
		if event.type in {'RIGHTMOUSE', 'ESC'}:
			self.cancel(context)
			return {'CANCELLED'}

		if event.type == 'TIMER':
			print(self.loop_count)
			self.loop_count = self.loop_count + 1
			if self.loop_count == 10:
				bpy.app.timers.register(self.every_seconds)
				
		return {'PASS_THROUGH'}

	def execute(self, context):
		wm = context.window_manager
		self._timer = wm.event_timer_add(1/self.loop_fps, window=context.window)
		wm.modal_handler_add(self)
		return {'RUNNING_MODAL'}

	def cancel(self, context):
		wm = context.window_manager
		wm.event_timer_remove(self._timer)

def register():
	bpy.utils.register_class(ModalTimerOperator)


def unregister():
	bpy.utils.unregister_class(ModalTimerOperator)


if __name__ == "__main__":
	register()

	# test call
	bpy.ops.wm.modal_timer_operator()


Recommended Posts

Blender Modal Operator parallel processing
Parallel processing with multiprocessing
Parallel processing with local functions
Parallel processing with Parallel of scikit-learn
[Python] Easy parallel processing with Joblib
Python parallel processing (multiprocessing and Joblib)
IPython cluster stupid (distributed parallel processing)
Python parallel / parallel processing sample code summary