|
|
|
@ -2,30 +2,40 @@
|
|
|
|
|
languages. |
|
|
|
|
""" |
|
|
|
|
|
|
|
|
|
import time |
|
|
|
|
|
|
|
|
|
from threading import Thread |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class ThreadWithReturn(Thread): |
|
|
|
|
def __init__(self, *args, **kwargs): |
|
|
|
|
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): |
|
|
|
|
self._return = self._target(*self._args, **self._kwargs) |
|
|
|
|
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 runner(value): |
|
|
|
|
return value + 2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def main(): |
|
|
|
|
t = ThreadWithReturn(target=runner, args=[2]) |
|
|
|
|
t.start() |
|
|
|
|
val = t.join() |
|
|
|
|
print(val) |
|
|
|
|
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}') |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|