@@ -8,32 +8,40 @@ async def main():
8
8
t0 = datetime .datetime .now ()
9
9
print (colorama .Fore .WHITE + "App started." , flush = True )
10
10
11
- data = trio .Queue (capacity = 10 )
11
+ """
12
+ trio.Queue was removed in v0.11.0:
13
+ - Replacing the call to trio.Queue() by trio.open_memory_channel()
14
+ - Using a MemorySendChannel object in generate_data function
15
+ - Using a MemoryReceiveChannel object in process_data function
16
+ - Updating requirements.txt with trio v0.16.0 and trio_asyncio v0.11.0
17
+ """
18
+
19
+ send_channel , receive_channel = trio .open_memory_channel (max_buffer_size = 10 )
12
20
13
21
with trio .move_on_after (5 ):
14
22
async with trio .open_nursery () as nursery :
15
- nursery .start_soon (generate_data , 20 , data , name = 'Prod 1' )
16
- nursery .start_soon (generate_data , 20 , data , name = 'Prod 2' )
17
- nursery .start_soon (process_data , 40 , data , name = 'Consumer' )
23
+ nursery .start_soon (generate_data , 20 , send_channel , name = 'Prod 1' )
24
+ nursery .start_soon (generate_data , 20 , send_channel , name = 'Prod 2' )
25
+ nursery .start_soon (process_data , 40 , receive_channel , name = 'Consumer' )
18
26
19
27
dt = datetime .datetime .now () - t0
20
28
print (colorama .Fore .WHITE + "App exiting, total time: {:,.2f} sec." .format (
21
29
dt .total_seconds ()), flush = True )
22
30
23
31
24
- async def generate_data (num : int , data : trio .Queue ):
32
+ async def generate_data (num : int , data : trio .MemorySendChannel ):
25
33
for idx in range (1 , num + 1 ):
26
34
item = idx * idx
27
- await data .put ((item , datetime .datetime .now ()))
35
+ await data .send ((item , datetime .datetime .now ()))
28
36
29
37
print (colorama .Fore .YELLOW + f" -- generated item { idx } " , flush = True )
30
38
await trio .sleep (random .random () + .5 )
31
39
32
40
33
- async def process_data (num : int , data : trio .Queue ):
41
+ async def process_data (num : int , data : trio .MemoryReceiveChannel ):
34
42
processed = 0
35
43
while processed < num :
36
- item = await data .get ()
44
+ item = await data .receive ()
37
45
38
46
processed += 1
39
47
value = item [0 ]
0 commit comments