@Jungles
Молодой и зелёный

Почему потоки в консоли работают не так как с терминале?

самый простой пример

spoiler
from queue import Queue
from threading import Thread

def worker(q,n):
   while True:
      item = q.get()
      if item is None:
         break
      print(item , n)  

c = Queue()
th1 =Thread(target = worker,args = (c,1))
th2 =Thread(target = worker,args = (c,2))
th1.start()
th2.start()


for i in range(50):
   c.put(i)
      

c.put(None)
th1.join()

c.put(None)
th2.join()


Вывод в терминале(то что нам нужно)
spoiler
0 1
1 2
2 1
3 2
4 2
5 1
6 2
7 1
8 2
9 1
10 2
11 1
12 2
13 1
14 2
15 1
16 2
17 1
18 2
19 1
20 2
21 1
22 2
23 1
24 2
25 1
26 2
27 1
28 2
29 1
30 2
31 1
33 1
32 2
34 1
35 2
36 1
37 2
38 1
39 2
40 1
41 2
42 1
43 2
44 1
45 2
46 1
47 2
48 1
49 2


а вот вывод в консоли работает как-то неадекватно.
spoiler
01 12

23 12

45 12

67 12

89 12

1011 12

1213 12

1415 12

1617 12

1819 12

2021 12

2223 12

2425 12

2627 12

2829 12

3031 12

3233 12

3435 12

3637 12

3839 12

4041 12

4243 12

4445 12

4647 12

4849 12

Почему?

ЗЫ: хочу уточнить,что меняется от параметра Queue(max_size)?
Не очень понимаю, определение максимальное кол-во объектов в очереди.
1 или 10 объектов, что от этого зависит.
предполагал, что если q = Queue(2),
то допустим будет
1 1
2 1
3 2
4 2,
но там все-равно подругому,к примеру
1 1
2 2
3 1
4 2
  • Вопрос задан
  • 58 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы