# ****************************************************** # Python threading tutorial # ****************************************************** # thread = a flow of execution. Like a separate order of instructions. # However each thread takes a turn running to achieve concurrency # GIL = (global interpreter lock), # allows only one thread to hold the control of the Python interpreter at any one time # cpu bound = program/task spends most of it's time waiting for internal events (CPU intensive) # use multiprocessing # io bound = program/task spends most of it's time waiting for external events (user input, web scraping) # use multithreading import threading import time def eat_breakfast(): time.sleep(3) print("You eat breakfast") def drink_coffee(): time.sleep(4) print("You drank coffee") def study(): time.sleep(5) print("You finish studying") x = threading.Thread(target=eat_breakfast, args=()) x.start() y = threading.Thread(target=drink_coffee, args=()) y.start() z = threading.Thread(target=study, args=()) z.start() x.join() y.join() z.join() print(threading.active_count()) print(threading.enumerate()) print(time.perf_counter()) # ******************************************************
@blizni33712 жыл бұрын
If you have problem with huge amount of time displaying by time.perf_counter() function here you have solve of this problem: We can read in documentation: time.perf_counter() [...] The reference point of the returned value is undefined, so that only the difference between the results of two calls is valid. So to solve it we have to declare variable before our code, for example: starting_point = time.perf_counter() ... our code here ... print (time.perf_counter() - starting_point)
@KudoShinichii1412 Жыл бұрын
thank you I understood that , but I am really wondering why did not happen to him
@Mildic Жыл бұрын
wow man thank you very much, i was looking at my code for like 10 minutes and couldnt figure it out
@NoPo1nt Жыл бұрын
came here just for this. thank you
@lukaskelber11 ай бұрын
@@KudoShinichii1412 Same, does anyone know why Bro didn't have to subtract two perf counters? Is there maybe some setting for this?
@Dmitopur11 ай бұрын
Thx! I think without your solution that function counted seconds from the point of my pc was turned on.
@AmmarAlIessa2 жыл бұрын
Really like how you go to the heart of the subject.. Concise and clear... Thanks..
@thepragmatic6383 Жыл бұрын
Thank you for these clear and precise explanations. As I am new to Python, this becomes very practical for my learning.
@d1jn2 жыл бұрын
I really like how you explain everything so simply and quickly. Keep it up man !
@kyokokirigiri166 Жыл бұрын
I second that!
@waynefrannedavis93058 ай бұрын
Interesting to see how Python addresses multi-processing and synchronization when compared to Elixir which is my go to language. At 75 years old, I am finally looking at object-orientation.
@ilyassbabkhouti Жыл бұрын
This is brilliant . Excellent explanation !!! 👏👏👏
@infinitecrafterYT Жыл бұрын
nice video bro
@entity56782 жыл бұрын
Such a wonderful explanation..
@lawrencedoliveiro91042 жыл бұрын
For I/O bound problems, it is better to use asyncio than threads. This gives less opportunity for race conditions and their consequent hard-to-reproduce bugs.
@piotrkopcewicz5227 Жыл бұрын
dobrze rozkminione :) Dziekowa
@SleepyAizawa69 Жыл бұрын
Firstly thank you bro Secondly if you guys have problem with main thread not printing 4then you must delete the() for writting the function in x=threading.thread()
@baldwin9207 Жыл бұрын
i was wondering why mine was different. thx!
@autoauto20008 ай бұрын
@@baldwin9207but why, now it works
@samuellopez51552 жыл бұрын
great explanation, loved the theory before the actual code
@ilhamm1915 Жыл бұрын
THAT IS ACTUALLY REALLY COOL NGL
@ugurbayrak98692 жыл бұрын
>>> Very consistent explanation :) >>> Could you please do this kind of tuts regarding python standart libr modules like Struct, OS, SubProcess and Select ? >>> Have a good time
@VenkataChalaBhaskar Жыл бұрын
Excellent Explanation !!!
@ilordepic2 жыл бұрын
hope the algorithm blesses your channel
@felixnyamongo2 жыл бұрын
Understood in one go. Good work bro
@FabioRBelotto Жыл бұрын
I would like that you showed an example like this : you can eat and drink at same time, but you must finish such activities to study.
@shuaibalghazali3405 Жыл бұрын
Thanks for this
@giaxlab2 жыл бұрын
Super, finally i learn this argument! :) Nice work!!!
@lw99542 жыл бұрын
TY bro
@bekturasanbekov1979 Жыл бұрын
thx 4 vid br o!
@Johann.Liebert Жыл бұрын
so simply, thankss
@aliforootani93482 жыл бұрын
great explanation, thanks
@Sstevewong368 ай бұрын
great
@rubenc46965 ай бұрын
thakns
@brianwake1002 жыл бұрын
Great video thanks
@gamerawesome81053 жыл бұрын
you sir are the best
@aaroncatolico75502 жыл бұрын
Even though you sound like 'Butthead' from 'Beavis & Butthead', I still love you 'Bro'. And thanks for your awesome tutorials. 👍🏻👍🏻
@kamlesht.j9366 Жыл бұрын
brooo you da bestt!!
@EissaAlahdul2 жыл бұрын
شكرا جزيلا
@BaminIce3 ай бұрын
Print("Amazing")
@dolevdo2 жыл бұрын
amazing thank!s
@HussainAli-sb1dv11 ай бұрын
love u
@nirutg51303 жыл бұрын
Thank you very much
@beingzero75412 жыл бұрын
Wow!!!!!
@ahiamatagabriel56962 жыл бұрын
thank youuu
@Daniel-cl6hj3 жыл бұрын
breh.... this is so clear...
@philtoa3343 жыл бұрын
Nice.
@SuperStarEevee2 жыл бұрын
Thank you!
@charan24462 жыл бұрын
Bro.. 👏 Heads down.
@Amir_Plays_non_stop3 жыл бұрын
Crystal Clear!
@xcorpionxyed20782 жыл бұрын
Hey bro I've a problem. Whenever I write my own code (following the same procedure) it shows only 1 thread and takes allotted time, but when I copy the given description code it and paste it, shows the 4 threads Can't figure out why is it happening??
@airexpertdrop3 жыл бұрын
oh yea its cool
@RenovaLabs6 ай бұрын
Bro, Do they only work with functions?
@uuhju70043 жыл бұрын
nice
@moisesherrera717 ай бұрын
but what if a function returns a value, how should we write that so we have the function in a separate thread then main but we can capture the return value of the function
@gustavoaponte1814 Жыл бұрын
meow~! uwu
@Pjnpm3 жыл бұрын
Make a tutorial for flutter please beer is on me 🍺
@ClydeKilgore-df8hy6 ай бұрын
Why do I get the following error after importing threading and attempting to use it? AttributeError: partially initialized module 'threading' has no attribute 'Thread' (most likely due to a circular import) same message when I use active_count()
@ClydeKilgore-df8hy6 ай бұрын
nevermind. figured it out.
@manuelvaal12572 жыл бұрын
My main tread is taking 734078.1110504 seconds to complete its task. what possibly could be the issue?
@hinter99072 жыл бұрын
the solution: # add this line just before running x.start() start_time = time.perf_counter() # add these lines after z.join end_time = time.perf_counter() delta_time = end_time - start_time print(delta_time)
@cinquecento19852 жыл бұрын
yeah.. multi threading in the morning.. sounds familiar. like brushing teeth while getting the pants on.. =)
@autoauto20008 ай бұрын
does not work 4 me?? how to unlock gil in pycharm
@estudio77532 жыл бұрын
ate
@aiviral_3 жыл бұрын
Hey I got this problem with Python showing 34568.4580 seconds while it only takes 3-4 seconds and it's not the only case in which this happens. Does anyone know how to display seconds correcty?
@wilsonsoeparman85742 жыл бұрын
Yup, me too
@mittlope27232 жыл бұрын
just divide it with 10,000 and you will get 3.4 secs
@mm-fn9uj2 жыл бұрын
somewhy i have 374690.9 seconds
@hinter99072 жыл бұрын
the solution: # add this line just before running x.start() start_time = time.perf_counter() # add these lines after z.join end_time = time.perf_counter() delta_time = end_time - start_time print(delta_time)
@techboomers89352 жыл бұрын
Kindly revealed your face , we want to sees a person who know every language exist in this world
@reinkdesigns2 жыл бұрын
should i be concerned that when i run the same code as you i get "590447.4203372" returned from "print(time.perf_counter())"
@ramanuj_g2 жыл бұрын
check above comments as the answer is there above.... nothing to be concerned just u have to add start time and subtract it from end time
@peesnlav2 жыл бұрын
for some reason my main thread waits for the other 3 threads to finish before it executes the print functions. i wrote the exact same code he wrote. anyone have an idea?
@blizni33712 жыл бұрын
Hello, you probably wrote parentheses when declaring - target= for example: x = threading.Thread(target=eat_breakfast(), args=()) Remove this and let's check again :)
@stevemiller1232 жыл бұрын
I have the exact same issue, did you resolve it? Even when copying and pasting the code from the description. It's behaving as if I joined all the threads even when I haven't. So when I actually write, x.join(), y.join(), z,join().. the behaver is the same.
@MrPsichoKid Жыл бұрын
@@blizni3371 jesus Christ, thanks man, i was in a hole for like 2 hourse before figuring out this!
@blizni3371 Жыл бұрын
@@MrPsichoKid No problem!
@ligdjumvidja82949 ай бұрын
Thanks a lot my friend ! Iwas trying to figure out why my example was faulty @@blizni3371
@ixmjk3 жыл бұрын
Thank you Bro i run the exact same code but for me the time.perf_counter() returns a really big value for time taken sth like 11929.1326382 but in reality it takes 5 to 6 seconds to run i search online for solutions but nothing came out. Any solutions?
@aiviral_3 жыл бұрын
I got the same issue :\
@wilsonsoeparman85742 жыл бұрын
Me too
@lawrencedoliveiro91042 жыл бұрын
Are you taking the difference between values? Because the zero point is implementation-defined.
@nakiros242 жыл бұрын
this worked for me: import threading import time def eat_breakfast(): time.sleep(3) print("You eat breakfast") def drink_coffee(): time.sleep(4) print("You drank coffee") def study(): time.sleep(5) print("You finish studying") begin_time = time.perf_counter() x = threading.Thread(target=eat_breakfast, args=()) x.start() y = threading.Thread(target=drink_coffee, args=()) y.start() z = threading.Thread(target=study, args=()) z.start() x.join() y.join() z.join() print(threading.active_count()) print(threading.enumerate()) print(time.perf_counter()-begin_time)