Как я могу выполнить цикл while и все еще принимать пользовательский ввод?
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)
Здесь startH, startM, stopH,stopM означает начальный час, начальную минуту, час остановки и минуту остановки. который является ввод данных пользователем через Android. Этот код работает. Он бежит по очереди, а потом продолжает бегать. Вот это решение. Если я хочу, чтобы пользователь снова вводил время. Это не примет. Как принять входные данные от пользователя, пока цикл еще работает? Скажем так: первая задача говорит о включении света, а вторая задача - о выключении света. Итак, когда второе задание выполнено. Предполагается, что завершено. Я пытался использовать break, return. Это не работает, как положено.
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);
}
1 ответ
Вы можете использовать потоки.
Вот очень простой пример:
время импорта
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)
Вы все еще можете вводить материал, пока worker
генерирует числа.
Если вам не нужно, не печатайте в worker
функция, так как stdout может стать грязным.