मैं एक नया अजगर 3.9 उपयोगकर्ता हूं जो मेरी कोडिंग को बढ़ाने की कोशिश कर रहा है। मैं एक प्रोग्राम लिख रहा हूं जो थोड़ी देर के लूप का उपयोग करता है और उपयोगकर्ता इनपुट के आधार पर कुंजी दबाए जाने के लिए फ़ंक्शन कॉल करेगा। मेरा कोड मूल रूप से इस तरह दिखता है:

from pynput.keyboard import Key, Controller
from graphics import *
import time
    
def wack():
   M = Controller()
   for i in range(3):
      M.press('a')
      time.sleep(1)    # This guy right here is the issue
      M.release('a')

def main():
    click = Win.checkMouse()
    while not click(click, exit_box):
       click = Win.checkMouse()
       if *input* == *correct string*:
          wack()
       

मेरे पास एक निकास बटन के साथ एक ग्राफिक्स विंडो है और जब बाहर निकलने पर क्लिक किया जाता है, तो यह प्रोग्राम को समाप्त कर देता है और विंडो बंद कर देता है। मुद्दा यह है कि time.sleep(1) इनपुट या कोड में उस बिंदु को नहीं रोकता है, यह पूरे प्रोग्राम को जबकि लूप को निलंबित कर देता है जो कि मैं नहीं करना चाहता हूं।

टाइम फ़ंक्शन के बारे में खोज करने से कोई स्पष्ट समाधान नहीं मिला है क्योंकि time.sleep() पाइथन में सबसे लोकप्रिय पॉज़िंग फ़ंक्शन प्रतीत होता है।

2
Veryconfusednewbie 24 नवम्बर 2020, 11:24

1 उत्तर

सबसे बढ़िया उत्तर

Async Wait एक अद्भुत विशेषता है जिसे python3.7 में जोड़ा गया है जो आपको किसी ऑब्जेक्ट या फ़ंक्शन के परिणाम प्राप्त करने के लिए प्रतीक्षा करने की अनुमति देता है जबकि बाकी प्रोग्राम निष्पादित होता है।

Async Wait में एक स्लीप मेथड विच है जो केवल एसिंक्रोनस फ़ंक्शन को रोक देता है और प्रोग्राम के बाकी कोड को निष्पादित करने देता है

इस तरह:

from pynput.keyboard import Key, Controller
from graphics import *
import time
import asyncio

#This is the asnychronous funtion    
async def wack():
   M = Controller()
   for i in range(3):
      M.press('a')
      await.sleep(1)#this sleeps the function but allows the rest of the program to work
      M.release('a')

def main():
    click = Win.checkMouse()
    while not click(click, exit_box):
       click = Win.checkMouse()
       if *input* == *correct string*:
          asyncio.run(wack()) #calling the asynchronous funtion
       

पाइथन के लिए async Wait(asyn io) को समझने के लिए यहां एक ट्यूटोरियल है

2
TERMINATOR 24 नवम्बर 2020, 17:19