[PYTHON] Traitement parallèle Blender Modal Operator

Notes personnelles

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

Traitement parallèle Blender Modal Operator
Traitement parallèle avec multitraitement
Traitement parallèle avec des fonctions locales
Traitement parallèle avec Parallel de scikit-learn
[Python] Traitement parallèle facile avec Joblib
Traitement parallèle Python (multitraitement et Joblib)
Stupid (traitement parallèle distribué) par cluster IPython
Résumé de l'exemple de code de traitement parallèle / parallèle Python