পাইথনে * নিক্সে, time.sleep()
থ্রেড বা প্রক্রিয়াটি ব্লক করে?
পাইথনে * নিক্সে, time.sleep()
থ্রেড বা প্রক্রিয়াটি ব্লক করে?
উত্তর:
এটি থ্রেডকে ব্লক করে। আপনি যদি পাইথন উত্সের মডিউল / টাইমমডিউল.এলটিতে সন্ধান করেন তবে আপনি দেখতে পাবেন যে floatsleep()
স্লিপ অপারেশনের মূল অংশটি একটি পাই_বিএসএলএলএলও_উথ্রেডস এবং পাই_ END_ALLOW_THREADS ব্লকে আবৃত রয়েছে, বর্তমানের সময় অন্যান্য থ্রেডগুলি কার্যকর হতে পারে allowing একজন ঘুমায়। আপনি এটি একটি সাধারণ অজগর প্রোগ্রামের মাধ্যমেও পরীক্ষা করতে পারেন:
import time
from threading import Thread
class worker(Thread):
def run(self):
for x in xrange(0,11):
print x
time.sleep(1)
class waiter(Thread):
def run(self):
for x in xrange(100,103):
print x
time.sleep(5)
def run():
worker().start()
waiter().start()
যা মুদ্রণ করবে:
>>> thread_test.run()
0
100
>>> 1
2
3
4
5
101
6
7
8
9
10
102
আপনার অ্যাপ্লিকেশনটিতে কেবলমাত্র একক থ্রেড রয়েছে এমন ক্ষেত্রে বাদে এটি কেবল থ্রেডটি ঘুমাবে, এক্ষেত্রে এটি থ্রেডটি কার্যকর করবে এবং কার্যকরভাবে প্রক্রিয়াটিও কার্যকর করবে।
ঘুমের উপরে অজগর ডকুমেন্টেশন এটি নির্দিষ্ট করে না, তাই আমি অবশ্যই বিভ্রান্তি বুঝতে পারি!
থ্রেডটি ব্লক হয়ে যাবে, তবে প্রক্রিয়াটি এখনও বেঁচে আছে।
একক থ্রেডযুক্ত অ্যাপ্লিকেশনটিতে, এর অর্থ আপনি যখন ঘুমাবেন তখন সমস্ত কিছুই অবরুদ্ধ। বহুবিশ্লেষিত অ্যাপ্লিকেশনটিতে কেবল আপনি স্পষ্টভাবে 'ঘুম' থ্রেডটি ব্লক করবে এবং অন্যান্য থ্রেডগুলি এখনও প্রক্রিয়াটির মধ্যে চলে।
প্রক্রিয়া নিজেই চালানো যায় না। সম্পাদনের ক্ষেত্রে, প্রক্রিয়াটি থ্রেডগুলির জন্য কেবল একটি ধারক। মানে আপনি প্রক্রিয়াটি একেবারেই থামাতে পারবেন না। এটি কেবল প্রক্রিয়াতে প্রযোজ্য নয়।
sleep
আদেশটি বিরতি দেবে।
এটি কোনও থ্রেডকে ব্লক করে যদি এটি একই থ্রেডে কার্যকর হয় তবে এটি মূল কোড থেকে কার্যকর করা হয় না