forked from bartvdbraak/blender
Python API Docs: Examples for new timer api
This commit is contained in:
parent
39dcf6a10a
commit
dcb86689b0
10
doc/python_api/examples/bpy.app.timers.1.py
Normal file
10
doc/python_api/examples/bpy.app.timers.1.py
Normal file
@ -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)
|
11
doc/python_api/examples/bpy.app.timers.2.py
Normal file
11
doc/python_api/examples/bpy.app.timers.2.py
Normal file
@ -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)
|
17
doc/python_api/examples/bpy.app.timers.3.py
Normal file
17
doc/python_api/examples/bpy.app.timers.3.py
Normal file
@ -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)
|
12
doc/python_api/examples/bpy.app.timers.4.py
Normal file
12
doc/python_api/examples/bpy.app.timers.4.py
Normal file
@ -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)
|
25
doc/python_api/examples/bpy.app.timers.5.py
Normal file
25
doc/python_api/examples/bpy.app.timers.5.py
Normal file
@ -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)
|
Loading…
Reference in New Issue
Block a user