39 lines
672 B
Markdown
39 lines
672 B
Markdown
|
# Decorator that runs a function in a thread
|
||
|
|
||
|
I wrote a small decorator that will convert any function to run in a thread:
|
||
|
|
||
|
|
||
|
```
|
||
|
import threading
|
||
|
|
||
|
def run_threaded(fn):
|
||
|
"""A decorator that makes a function run in a thread."""
|
||
|
|
||
|
def run(*k, **kw):
|
||
|
t = threading.Thread(target=fn, args=k, kwargs=kw)
|
||
|
t.start()
|
||
|
return t
|
||
|
|
||
|
return run
|
||
|
```
|
||
|
|
||
|
Example:
|
||
|
|
||
|
```
|
||
|
@run_threaded
|
||
|
def add(x, y):
|
||
|
# This runs in a separate thread.
|
||
|
print(x+y)
|
||
|
|
||
|
add(1+2)
|
||
|
```
|
||
|
|
||
|
That's it!
|
||
|
|
||
|
* * *
|
||
|
|
||
|
<p style="font-size:80%; font-style: italic">
|
||
|
Last updated on July 19, 2023. For any questions/feedback,
|
||
|
email me at <a href="mailto:hi@stavros.io">hi@stavros.io</a>.
|
||
|
</p>
|