Я изучаю потоки, и у меня есть одна непонятная вещь.
from threading import Thread
from time import sleep
global a
a=0
def th1():
lasta=0
while(a<200):
if(a!=lasta):
lasta=a
print(a)
thrd=Thread(target=th1)
print(a)
thrd.start()
for i in range (1,200):
a+=1
sleep(0)
это печатает числа от 0 до 199, но
from threading import Thread
from time import sleep
global a
a=0
def th1():
lasta=0
while(a<200):
if(a!=lasta):
lasta=a
print(a)
thrd=Thread(target=th1)
print(a)
thrd.start()
for i in range (1,200):
a+=1
этот код печатает только 0 и 199.
Я думаю, что происходит то, что во втором коде нет (скажем латинских) оператора stop, который заставлял бы программу выполнять другую часть кода, в то время как первый останавливает l oop и дает другому потоку возможность выполнить . затем он проверяет, прошло ли 0 секунд, и продолжает с l oop. Я не знаю, прав ли я, пожалуйста, если бы вы могли помочь мне объяснить, что на самом деле происходит, я был бы рад. также как я могу овладеть такими вещами? например, чтобы непрерывно запускать два потока и позволять им выполнять работу в соответствии с одной глобальной переменной. потому что, как я ясно вижу, даже несмотря на то, что я использую другой поток, они на самом деле не работают вместе, они все еще ждут друг друга
Спасибо!