Raspithek
2 years ago
3 changed files with 2 additions and 91 deletions
@ -1,46 +0,0 @@ |
|||
from timeit import default_timer as timer |
|||
import time |
|||
import threading |
|||
|
|||
def calc_square(numbers, verbose=False): |
|||
for n in range(1,numbers): |
|||
q= n*n |
|||
if verbose: |
|||
print(f'\n{n} ^ 2 = {q}') |
|||
time.sleep(0.1) |
|||
|
|||
def calc_cube(numbers,verbose=False): |
|||
for n in range(1,numbers): |
|||
k = n*n*n |
|||
if verbose: |
|||
print(f'\n{n} ^ 3 = {k}') |
|||
time.sleep(0.1) |
|||
|
|||
start = timer() |
|||
|
|||
thread_square = threading.Thread(target=calc_square, args=(100,True)) |
|||
thread_cube = threading.Thread(target=calc_cube, args=(100,True)) |
|||
|
|||
thread_cube.start() |
|||
thread_square.start() |
|||
|
|||
thread_cube.join() |
|||
thread_square.join() |
|||
ende = timer() |
|||
differenz_mit_print = ende - start |
|||
print(f'Zeit mit print():{differenz_mit_print}s') |
|||
|
|||
start = timer() |
|||
|
|||
thread_square = threading.Thread(target=calc_square, args=(100,False)) |
|||
thread_cube = threading.Thread(target=calc_cube, args=(100,False)) |
|||
|
|||
thread_cube.start() |
|||
thread_square.start() |
|||
|
|||
thread_cube.join() |
|||
thread_square.join() |
|||
|
|||
ende = timer() |
|||
differenz_ohne_print = ende - start |
|||
print(f'Zeit ohne print():{differenz_ohne_print}s') |
@ -1,45 +0,0 @@ |
|||
import asyncio |
|||
import random |
|||
import time |
|||
|
|||
gesamtwert = 0 |
|||
message = '' |
|||
|
|||
|
|||
async def calculate_sum(lock, thread_nummer): |
|||
global gesamtwert |
|||
global message |
|||
|
|||
for i in range(100 + thread_nummer): |
|||
async with lock: |
|||
zwischen = gesamtwert |
|||
#Zufällige Wartezeit zwischen 0,1s und 0,5s |
|||
wartezeit = random.randint(1,5+thread_nummer) |
|||
time.sleep(0.1 * wartezeit) |
|||
|
|||
zwischen += 1 |
|||
|
|||
async with lock: |
|||
gesamtwert = zwischen |
|||
|
|||
message = f'Thread {thread_nummer} fertig' |
|||
print(f'Thread + {thread_nummer} abgearbeitet.') |
|||
|
|||
async def main(): |
|||
|
|||
#async Lock erzeugen |
|||
lock = asyncio.Lock() |
|||
|
|||
# drei Threads starten, um die Summe der Zahlen zu berechnen |
|||
|
|||
threads = [asyncio.create_task(calculate_sum(lock, _+1)) for _ in range(3)] |
|||
|
|||
#Warten auf alle Threads |
|||
await asyncio.gather(*threads) |
|||
|
|||
print(f'gesamtwert={gesamtwert}') |
|||
print(f'message={message}') |
|||
|
|||
if __name__ == '__main__': |
|||
asyncio.run(main()) |
|||
|
Loading…
Reference in new issue