python - সহজ - কিভাবে পাইথন এ সময় বিলম্ব করতে পারি?




সহজ ভাষায় পাইথন ৩ pdf (9)

কিভাবে পাইথন এ সময় বিলম্ব করতে পারি?

একটি থ্রেডে আমি ঘুম ফাংশন সুপারিশ:

>>> from time import sleep

>>> sleep(4)

এটি আসলে অপারেটিং সিস্টেমের মাধ্যমে বলা হয় এমন থ্রেডটির প্রক্রিয়াকরণ স্থগিত করে, যা অন্যান্য সূত্র এবং প্রসেসগুলিকে ঘুমন্ত অবস্থায় চালানোর অনুমতি দেয়।

যে উদ্দেশ্যে, অথবা কেবল নির্বাহ থেকে একটি ফাংশন বিলম্ব করার জন্য এটি ব্যবহার করুন। উদাহরণ স্বরূপ:

>>> def party_time():
...     print('hooray!')
... 
>>> sleep(3); party_time()
hooray!

"হুররে!" আমি আঘাত আঘাত 3 সেকেন্ড পরে মুদ্রিত।

একাধিক থ্রেড এবং প্রসেস সঙ্গে sleep ব্যবহার উদাহরণ

আবার, sleep আপনার থ্রেড স্থগিত - এটি শূন্য প্রক্রিয়াকরণ ক্ষমতা পাশে ব্যবহার করে।

প্রদর্শনের জন্য, এইরকম একটি স্ক্রিপ্ট তৈরি করুন (আমি প্রথমে এটি একটি ইন্টারেক্টিভ পাইথন 3.5 শেল এ চেষ্টা করেছিলাম, তবে উপ-প্রসেসগুলি কিছু কারণে party_later ফাংশন খুঁজে party_later না):

from concurrent.futures import ThreadPoolExecutor, ProcessPoolExecutor, as_completed
from time import sleep, time

def party_later(kind='', n=''):
    sleep(3)
    return kind + n + ' party time!: ' + __name__

def main():
    with ProcessPoolExecutor() as proc_executor:
        with ThreadPoolExecutor() as thread_executor:
            start_time = time()
            proc_future1 = proc_executor.submit(party_later, kind='proc', n='1')
            proc_future2 = proc_executor.submit(party_later, kind='proc', n='2')
            thread_future1 = thread_executor.submit(party_later, kind='thread', n='1')
            thread_future2 = thread_executor.submit(party_later, kind='thread', n='2')
            for f in as_completed([
              proc_future1, proc_future2, thread_future1, thread_future2,]):
                print(f.result())
            end_time = time()
    print('total time to execute four 3-sec functions:', end_time - start_time)

if __name__ == '__main__':
    main()

এই স্ক্রিপ্ট থেকে উদাহরণ আউটপুট:

thread1 party time!: __main__
thread2 party time!: __main__
proc1 party time!: __mp_main__
proc2 party time!: __mp_main__
total time to execute four 3-sec functions: 3.4519670009613037

Multithreading

আপনি Timer থ্রেডিং বস্তুর সাথে একটি পৃথক থ্রেডে পরবর্তী সময়ে কল করার জন্য একটি ফাংশন ট্রিগার করতে পারেন:

>>> from threading import Timer
>>> t = Timer(3, party_time, args=None, kwargs=None)
>>> t.start()
>>>
>>> hooray!

>>> 

ফাঁকা রেখা দেখায় যে আমার মানটি ফাংশনটি মুদ্রিত হয়েছে এবং আমি প্রম্পটে ছিল তা নিশ্চিত করতে এন্টার চাপতে হয়েছিল।

এই পদ্ধতির উল্টোটি হল যে Timer থ্রেডটি অপেক্ষা করার সময়, আমি অন্য কিছু করতে সক্ষম হয়েছিলাম, এই ক্ষেত্রে, একবার প্রবেশ করানো - ফাংশনটি কার্যকর করার আগে (প্রথম খালি প্রম্পট দেখুন)।

মাল্টিপ্রসেসিং লাইব্রেরীতে একটি সম্পর্কিত বস্তু নেই। আপনি একটি তৈরি করতে পারেন, কিন্তু সম্ভবত এটি একটি কারণে বিদ্যমান নেই। একটি উপ-থ্রেড একটি সম্পূর্ণ নতুন উপ-প্রক্রিয়া তুলনায় একটি সহজ টাইমার জন্য অনেক বেশি জ্ঞান করে তোলে।

আমি পাইথন স্ক্রিপ্টে সময় দেরী কিভাবে লিখতে চাই।


4 টি পদ্ধতি আছে যা আমি জানি: time.sleep() , pygame.time.wait() , pyplot.pause() এর pyplot.pause() , এবং .after()

time.sleep() উদাহরণ (Tkinter ব্যবহার করে ব্যবহার করবেন না):

import time
print('Hello')
time.sleep(5) #number of seconds
print('Bye')

pygame.time.wait() উদাহরণস্বরূপ (যদি আপনি পাইগম উইন্ডোটি ব্যবহার না করেন তবে প্রস্তাবিত নয়, তবে আপনি তাত্ক্ষণিকভাবে উইন্ডোটি প্রস্থান করতে পারেন):

import pygame
#If you are going to use the time module
#don't do "from pygame import *"
pygame.init()
print('Hello')
pygame.time.wait(5000)#milliseconds
print('Bye')

matplotlib এর ফাংশন pyplot.pause() উদাহরণ (যদি আপনি গ্রাফটি ব্যবহার না করেন তবে প্রস্তাবিত নয় তবে আপনি গ্রাফটি তাত্ক্ষণিকভাবে প্রস্থান করতে পারেন):

import matplotlib
print('Hello')
matplotlib.pyplot.pause(5)#seconds 
print('Bye')

অবশেষে, .after() পদ্ধতি (Tkinter সঙ্গে ভাল):

import tkinter as tk #Tkinter for python 2
root = tk.Tk()
print('Hello')
def ohhi():
 print('Oh, hi!')
root.after(5000, ohhi)#milliseconds and then a function
print('Bye')

আপনি সময় মডিউল sleep() ফাংশন ব্যবহার করতে পারেন। এটি উপ-দ্বিতীয় রেজোলিউশনের জন্য একটি ভাসমান যুক্তি নিতে পারে।

from time import sleep
sleep(0.1) # Time in seconds.

একটি ঘুমন্ত generator সঙ্গে মজা একটি বিট।

প্রশ্ন সময় বিলম্ব সম্পর্কে হয়। এটি নির্দিষ্ট সময় হতে পারে, তবে কিছু ক্ষেত্রে আমরা শেষ সময় থেকে মাপের বিলম্বের প্রয়োজন হতে পারে। এখানে একটি সম্ভাব্য সমাধান:

বিলম্ব শেষ সময় থেকে পরিমাপ (নিয়মিত জেগে উঠছে)

পরিস্থিতি হতে পারে, আমরা যতটা সম্ভব নিয়মিত কিছু করতে চাই এবং আমরা সব last_time নিয়ে বিরক্ত করতে চাই না, next_time আমাদের কোডের চারপাশে স্টাফ।

Buzzer জেনারেটর

নিম্নলিখিত কোডটি ( sleepy.py ) একটি buzzergen জেনারেটর সংজ্ঞায়িত করে:

import time
from itertools import count

def buzzergen(period):
    nexttime = time.time() + period
    for i in count():
        now = time.time()
        tosleep = nexttime - now
        if tosleep > 0:
            time.sleep(tosleep)
            nexttime += period
        else:
            nexttime = now + period
        yield i, nexttime

নিয়মিত buzzergen আমন্ত্রণ

from sleepy import buzzergen
import time
buzzer = buzzergen(3) # Planning to wake up each 3 seconds
print time.time()
buzzer.next()
print time.time()
time.sleep(2)
buzzer.next()
print time.time()
time.sleep(5) # Sleeping a bit longer than usually
buzzer.next()
print time.time()
buzzer.next()
print time.time()

এবং এটি চলমান আমরা দেখতে:

1400102636.46
1400102639.46
1400102642.46
1400102647.47
1400102650.47

আমরা সরাসরি এটি একটি লুপে ব্যবহার করতে পারি:

import random
for ring in buzzergen(3):
    print "now", time.time()
    print "ring", ring
    time.sleep(random.choice([0, 2, 4, 6]))

এবং এটি চলমান আমরা দেখতে পারে:

now 1400102751.46
ring (0, 1400102754.461676)
now 1400102754.46
ring (1, 1400102757.461676)
now 1400102757.46
ring (2, 1400102760.461676)
now 1400102760.46
ring (3, 1400102763.461676)
now 1400102766.47
ring (4, 1400102769.47115)
now 1400102769.47
ring (5, 1400102772.47115)
now 1400102772.47
ring (6, 1400102775.47115)
now 1400102775.47
ring (7, 1400102778.47115)

আমরা দেখি, এই বাজরটি খুব শক্ত নয় এবং আমরা ঘুমিয়ে ও নিয়মিত সময়সূচী থেকে সরে গেলেও নিয়মিত ঘুমানোর অন্তরগুলি ধরতে পারি।


দয়া করে https://web.archive.org/web/20090207081238/http://faqts.com/knowledge_base/view.phtml/aid/2609/fid/378 , যা আপনাকে আরও সাহায্য করতে পারে:

সময় মডিউল ঘুম ফাংশন চেষ্টা করুন।

import time
time.sleep(60)

এবং এটি একটি লুপের মধ্যে রাখুন এবং একটি বিবৃতি শুধুমাত্র মিনিটে কার্যকর হবে ... যা আপনাকে কমান্ডের কতক্ষণ সময় নেয় তার পূর্বনির্ধারিত অন্তরগুলিতে একটি বিবৃতি চালাতে দেয় (যতক্ষণ এটি একটি মিনিট বা 5 বা 60 এর কম সময় নেয়) অথবা যাই হোক না কেন আপনি এটি সেট করুন) উদাহরণস্বরূপ, আমি এক মিনিট একবার একটি পিং চালাতে চেয়েছিলেন। আমি শুধু সময়। ঘুম time.sleep(60) বা সময়। time.sleep(45) এমনকি, পিং সবসময় একই পরিমাণ সময় লাগবে না। এখানে কোড :)

time.sleep(time.localtime(time.time())[5])

[5] শুধু সময় আউট সেকেন্ড pulls। time.localtime() এর রিটার্ন মান।

time.sleep সম্পর্কে মহান জিনিস এটি ভাসমান বিন্দু সংখ্যা সমর্থন করে!

import time
time.sleep(0.1) 

http://python.org/doc/current/lib/module-time.html


পাইথন সময় বিলম্ব করার সবচেয়ে ভাল উপায় time লাইব্রেরি ব্যবহার করা হয়। এটার মত:

import time
time.sleep(10)

আপনি বিলম্ব করতে চান সেকেন্ডের সাথে মাত্র 10 টি প্রতিস্থাপন করুন। আপনি '10.1 ',' 5.07 'ইত্যাদি ফরম্যাট ব্যবহার করতে পারেন।

এটা Tkinter সঙ্গে এই ব্যবহার করার সুপারিশ করা হয় না


বিলম্ব লাইব্রেরীর সাথে সম্পন্ন করা হয়, বিশেষ করে সময় . time.sleep() ফাংশন ...

শুধু এটি একটি দ্বিতীয় জন্য অপেক্ষা করতে:

from time import sleep
sleep(1)

এই কাজ করে কারণ:

from time import sleep

আপনি কেবল সময় লাইব্রেরি থেকে time.sleep() বের করে time.sleep() যার মানে আপনি কেবল এটির সাথে কল করতে পারেন:

sleep(seconds)

বরং টাইপ করার চেয়ে

time.sleep()

যা টাইপ awkwardly দীর্ঘ।

এই পদ্ধতির সাথে, আপনি সময় লাইব্রেরির অন্যান্য বৈশিষ্ট্যগুলিতে অ্যাক্সেস পাবেন না এবং আপনার ঘুম বলা একটি পরিবর্তনশীল নেই। কিন্তু আপনি সময় বলা একটি পরিবর্তনশীল তৈরি করতে পারে।

from [library] import [function] (, [function2]) যদি আপনি কেবল একটি মডিউল নির্দিষ্ট অংশ চান তাহলে মহান।

আপনি সমানভাবে এটা করতে পারে

import time
time.sleep(1)

এবং সময় সময় লাইব্রেরীর অন্যান্য বৈশিষ্ট্যগুলিতে অ্যাক্সেস থাকবে যেমন আপনি time.[function]() টাইপ করুন time.[function]() , তবে আপনি পরিবর্তনশীল সময় তৈরি করতে পারবেন না।


বিলম্ব তিনটি পদ্ধতি ব্যবহার করে প্রয়োগ করা যেতে পারে।

আসুন সহজতম এক দিয়ে শুরু করি:

import time
time.sleep(5) # Delay for 5 seconds.

দেরি করার দ্বিতীয় পদ্ধতিটি নিখরচায় ওয়েট পদ্ধতি ব্যবহার করবে:

 driver.implicitly_wait(5)

তৃতীয় পদ্ধতিটি যখন আপনি কোন নির্দিষ্ট কাজ সম্পন্ন না হওয়া পর্যন্ত বা কোনো উপাদান পাওয়া না হওয়া পর্যন্ত অপেক্ষা করতে আরও বেশি কার্যকর হয়:

self.wait.until(EC.presence_of_element_located((By.ID, 'UserName'))

import time
time.sleep(5)   # Delays for 5 seconds. You can also use a float value.

এখানে আরেকটি উদাহরণ রয়েছে যেখানে একটি মিনিট প্রায় একবার চালানো হয়:

import time
while True:
    print("This prints once a minute.")
    time.sleep(60) # Delay for 1 minute (60 seconds).




timedelay