2016-03-28 18 views
0
def value(startH,startM,stopH,stopM): 

     def job(): 
       do job 

     def job1(): 
       do another job 


     start_time = "{0:02d}:{1:02d}".format(startH, startM) 
     stop_time = "{0:02d}:{1:02d}".format(stopH, stopM) 

     schedule.every().day.at(start_time).do(job) 
     schedule.every().day.at(stop_time).do(job1) 

     while True: 
       schedule.run_pending() 
       time.sleep(1) 

Buradan startH, startM, stopH, stopM, başlangıç ​​saatini, başlama saatini, durma saatini ve durma dakikalarını ifade eder. kullanıcı tarafından android aracılığıyla verilen girdi. Bu kod çalışır. Kuvvetler çalışır ve sonra çalışmaya devam eder. İşte uygunluk. Kullanıcının zamanı tekrar girmesini istersem. Kabul etmeyecek. Döngü hala çalışırken kullanıcıdan gelen girişi nasıl kabul edebilir? Sadece ilk görevin ışığı açacağını söyler, sonra ikinci görev ışığı kapatır. Yani ikinci görev tamamlandığında. Tam olarak kabul edilir. Ara vermeyi denedim, geri dönüş. Olması gerektiği gibi çalışmıyor.Döngü sırasında nasıl çalıştırabilirim ve hala kullanıcı girişini kabul edebilirim?

public void publish(int startH,int startM, int stopH, int stopM) 
{ 
    JSONObject js = new JSONObject(); 
    try { 
     js.put("START_HOUR", startH); 
     js.put("START_MINUTE", startM); 
     js.put("STOP_HOUR", stopH); 
     js.put("STOP_MINUTE", stopM); 



    } 


public void setTime(View view) 
{ 


    int storeStartHour = Integer.parseInt(startHrs.getText().toString()); 
    int storeStartMinutes = Integer.parseInt(startMinutes.getText().toString()); 
    int storeStopHour = Integer.parseInt(stopHrs.getText().toString()); 
    int storeStopMinutes = Integer.parseInt(stopMinutes.getText().toString()); 



    publish(storeStartHour, storeStartMinutes, storeStopHour, storeStopMinutes); 



} 
+0

Kullanım konuları, Luke – Sergius

+0

Örneğin, iş parçacığı denir. Bu veya eşzamansız/engelleyici olmayan kod. Burada kullanıcı girişi göremiyorum, sizin için nereye koyacağımı bilmiyorum. – Torxed

+0

@Torxed gelen giriş startH başlangıçta başlatılan startH ve stopM ve stopM için startM startM ve stopM ... bir kez ayarlanabilir. Öyleyse tekrar ayarlanamıyorum ... – sam

cevap

1

threading.

ithalat parçacığı Hala giriş şeyler worker numaralarını oluşturuyor olabilir iken ithalat süresi

def worker(num): 
    # Do some stuff 
    for i in range(5): 
     time.sleep(2) 
     print(2**(num + i)) 

if __name__ == "__main__": 
    i = int(input("Enter a number: ")) 

    t = threading.Thread(target=worker, args=(i,)) # Always put a comma after the arguments. Even if you have only one arg. 
    t.start() # Start the thread 

    while True: 
     choice = input() 

     if choice == "stop": 
      print("Waiting for the function to finish...") 
      t.join() # Stop the thread (NOTE: the program will wait for the function to finish) 
      break 

     else: 
      print(choice) 

:

İşte çok basit bir örnek.
Gerçekten yapmanız gerekmedikçe, stdout dağınık olabileceğinden, worker işlevinde yazdırma yapmayın.

+0

koduna bakın. Ama yapmaya çalıştığım şey, kullanıcıdan gelen bilgileri androidden almak. kullanıcının başlangıç ​​zamanı olarak "12:40" koymak istediğini söyleyin. startH, "12" yi tutacak ve startM "40" tutacaktır. ve aynı durma süresidir. Kullanıcının python arayüzünden değil, android'den girişi ekleyebilmesini istiyorum. Hiç fikrin var mı. Bu süreçte takılıyorum – sam

+0

@sam Lütfen daha ayrıntılı bir şekilde açıklayınız. Senaryoyu çalıştırıyor musun? – Janekmuric

+0

bir kullanıcı var 4 değer.startM, startH ve stopH stopM girebilir. kullanıcı değeri girer ve düğmeyi tıklar. Bu, python tarafından desteklenen json nesne formatında ahududuya gönderilir. ve bu değer python kodunda tutulur – sam

İlgili konular