Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJacques Lucke <mail@jlucke.com>2018-11-27 13:31:35 +0300
committerJacques Lucke <mail@jlucke.com>2018-11-27 13:31:48 +0300
commitdcb86689b037e545b08ff35c355db08889b73ef1 (patch)
tree62facf17880ca5596331a642b22f916fd59e1857 /doc/python_api/examples
parent39dcf6a10a53c49d3c1339755181dfce233f7b3d (diff)
Python API Docs: Examples for new timer api
Diffstat (limited to 'doc/python_api/examples')
-rw-r--r--doc/python_api/examples/bpy.app.timers.1.py10
-rw-r--r--doc/python_api/examples/bpy.app.timers.2.py11
-rw-r--r--doc/python_api/examples/bpy.app.timers.3.py17
-rw-r--r--doc/python_api/examples/bpy.app.timers.4.py12
-rw-r--r--doc/python_api/examples/bpy.app.timers.5.py25
5 files changed, 75 insertions, 0 deletions
diff --git a/doc/python_api/examples/bpy.app.timers.1.py b/doc/python_api/examples/bpy.app.timers.1.py
new file mode 100644
index 00000000000..bae3b94b24a
--- /dev/null
+++ b/doc/python_api/examples/bpy.app.timers.1.py
@@ -0,0 +1,10 @@
+"""
+Run a Function in x Seconds
+---------------------------
+"""
+import bpy
+
+def in_5_seconds():
+ print("Hello World")
+
+bpy.app.timers.register(in_5_seconds, first_interval=5)
diff --git a/doc/python_api/examples/bpy.app.timers.2.py b/doc/python_api/examples/bpy.app.timers.2.py
new file mode 100644
index 00000000000..cdd9bf8e9ff
--- /dev/null
+++ b/doc/python_api/examples/bpy.app.timers.2.py
@@ -0,0 +1,11 @@
+"""
+Run a Function every x Seconds
+------------------------------
+"""
+import bpy
+
+def every_2_seconds():
+ print("Hello World")
+ return 2
+
+bpy.app.timers.register(every_2_seconds)
diff --git a/doc/python_api/examples/bpy.app.timers.3.py b/doc/python_api/examples/bpy.app.timers.3.py
new file mode 100644
index 00000000000..79daf6a7740
--- /dev/null
+++ b/doc/python_api/examples/bpy.app.timers.3.py
@@ -0,0 +1,17 @@
+"""
+Run a Function n times every x seconds
+--------------------------------------
+"""
+import bpy
+
+counter = 0
+
+def run_10_times():
+ global counter
+ counter += 1
+ print(counter)
+ if counter == 10:
+ return None
+ return 0.1
+
+bpy.app.timers.register(run_10_times)
diff --git a/doc/python_api/examples/bpy.app.timers.4.py b/doc/python_api/examples/bpy.app.timers.4.py
new file mode 100644
index 00000000000..a56d0e5f36f
--- /dev/null
+++ b/doc/python_api/examples/bpy.app.timers.4.py
@@ -0,0 +1,12 @@
+"""
+Assign parameters to functions
+------------------------------
+"""
+import bpy
+import functools
+
+def print_message(message):
+ print("Message:", message)
+
+bpy.app.timers.register(functools.partial(print_message, "Hello"), first_interval=2)
+bpy.app.timers.register(functools.partial(print_message, "World"), first_interval=3)
diff --git a/doc/python_api/examples/bpy.app.timers.5.py b/doc/python_api/examples/bpy.app.timers.5.py
new file mode 100644
index 00000000000..b35e307f218
--- /dev/null
+++ b/doc/python_api/examples/bpy.app.timers.5.py
@@ -0,0 +1,25 @@
+"""
+Use a Timer to react to events in another thread
+------------------------------------------------
+
+You should never modify Blender data at arbitrary points in time in separate threads.
+However you can use a queue to collect all the actions that should be executed when Blender is in the right state again.
+Pythons `queue.Queue` can be used here, because it implements the required locking semantics.
+"""
+import bpy
+import queue
+
+execution_queue = queue.Queue()
+
+# This function can savely be called in another thread.
+# The function will be executed when the timer runs the next time.
+def run_in_main_thread(function):
+ execution_queue.put(function)
+
+def execute_queued_functions():
+ while not execution_queue.empty():
+ function = execution_queue.get()
+ function()
+ return 1
+
+bpy.app.timers.register(execute_queued_functions)