You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
43 lines
925 B
43 lines
925 B
"""Checking if we can get the result of a thread on a join(), like other |
|
languages. |
|
""" |
|
|
|
import time |
|
|
|
from threading import Thread |
|
|
|
|
|
class ThreadWithReturn(Thread): |
|
def __init__(self, value, *args, **kwargs): |
|
super().__init__(*args, **kwargs) |
|
print(f'Created thread with time {value}') |
|
self._value = value |
|
self._return = None |
|
|
|
def run(self): |
|
time.sleep(self._value) |
|
self._return = self._value + 2 |
|
print(f'Thread {self._value} completed') |
|
|
|
def join(self): |
|
super().join() |
|
print(f'Thread {self._value} joined') |
|
return self._return |
|
|
|
|
|
def main(): |
|
values = reversed(range(5)) |
|
threads = [] |
|
for value in values: |
|
t = ThreadWithReturn(value) |
|
t.start() |
|
threads.append(t) |
|
|
|
for thread in threads: |
|
val = thread.join() |
|
print(f'Returned value: {val}') |
|
|
|
|
|
|
|
if __name__ == '__main__': |
|
main()
|
|
|