Я не уверен, что понимаю, почему вы хотите использовать потоки или процессы, если хотите, чтобы вычисления выполнялись синхронно. Почему бы просто не запустить его в основном процессе/потоке? — person Blckknght nbsp schedule 18.03.2014
Ответы (2)
Используйте очередь: каждый поток после завершения помещает результат в очередь, а затем вам просто нужно прочитать соответствующее количество результатов и игнорировать остаток:
#!python3.3 import queue # For Python 2.x use ‘import Queue as queue’ import threading, time, random def func(id, result_queue): print(«Thread», id) time.sleep(random.random() * 5) result_queue.put((id, ‘done’)) def main(): q = queue.Queue() threads = [ threading.Thread(target=func, args=(i, q)) for i in range(5) ] for th in threads: th.daemon = True th.start() result1 = q.get() result2 = q.get() print(«Second result: <>».format(result2)) if __name__==’__main__’: main()
Документация для Queue.get() (без аргументов эквивалентна Queue.get(True, None):
👌 Как избавиться от громоздкого if else в Python. Простой трюк
Queue.get([block[, timeout]]) Remove and return an item from the queue. If optional args block is true and timeout is None (the default), block if necessary until an item is available. If timeout is a positive number, it blocks at most timeout seconds and raises the Empty exception if no item was available within that time. Otherwise (block is false), return an item if one is immediately available, else raise the Empty exception (timeout is ignored in that case).
person Victor Martins schedule 17.03.2014
Спасибо!! Все еще жду, чтобы увидеть, как с ним можно использовать модуль подпроцесса! — person alphanumeric; 18.03.2014
Вау, эта угроза спасла мой день. В python2.7 модуль очереди не существует, но вместо этого он называется Queue: D — person Allan Karlson; 30.01.2018
Я обнаружил, что использование подмодуля «пул» в «многопроцессорной обработке» прекрасно работает для одновременного выполнения нескольких процессов в сценарии Python.
Внимательно посмотрите на «# асинхронный запуск нескольких вычислений может использовать больше процессов» в примере. Как только вы поймете, что делают эти строки, следующий пример, который я построил, будет иметь большой смысл.
import numpy as np from multiprocessing import Pool def desired_function(option, processes, data, etc. ): # your code will go here. option allows you to make choices within your script # to execute desired sections of code for each pool or subprocess. return result_array # «for example» result_array = np.zeros(«some shape») # This is normally populated by 1 loop, lets try 4. processes = 4 pool = Pool(processes=processes) args = (processes, data, etc. ) # Arguments to be passed into desired function. multiple_results = [] for i in range(processes): # Executes each pool w/ option (1-4 in this case). multiple_results.append(pool.apply_async(param_process, (i+1,)+args)) # Syncs each. results = np.array(res.get() for res in multiple_results) # Retrieves results after # every pool is finished! for i in range(processes): result_array = result_array + results[i] # Combines all datasets!
Код в основном запускает нужную функцию для заданного количества процессов. Вам нужно будет тщательно сделать так, чтобы ваша функция могла различать каждый процесс (поэтому я добавил переменную «опция».) Кроме того, это не обязательно должен быть массив, который заполняется в конце, но для моего примера я так и использовал. Надеюсь, это упростит или поможет вам лучше понять возможности многопроцессорной обработки в Python!
Как удивить девушку при помощи Python #shorts
Источник: digitrain.ru
Как дождаться определенного времени в Python?
Всем привет! В этом посте мы посмотрим, как мы можем дождаться определенного времени в Python.
Как дождаться определенного времени в Python?
Всем привет! В этом посте мы посмотрим, как мы можем дождаться определенного времени в Python.
Это особенно важно, когда у вас есть определенные события или задачи, запланированные после определенного периода времени.
Python предлагает нам разные способы сделать это. Итак, давайте посмотрим на все подходы, которые мы можем использовать: как в однопоточной, а также в многопоточной среде!
Python – ждать определенного времени в однопоточных средах
Если ваша главная программа состоит только из одного потока/программы, то Python делает это очень легко для нас.
Одним из возможных подходов, чтобы сделать программу ждать определенного времени в Python, использует время модуль.
Используя time.sleep () ждать
Пауза в Python для ввода пользователем
Вход() используется в Python 3 для приема данных от пользователя. Иногда для программирования требуется подождать или приостановить задачу ввода на определенный период времени. Например, если в сценарии есть бесконечный цикл, который будет завершаться в зависимости от ввода конкретного пользователя, то он будет ждать ввода от пользователя на каждой итерации цикла.
Модуль времени содержит спать() метод, который можно использовать для ожидания определенного периода времени в Python перед вводом. Python содержит множество других модулей для завершения сценария при нажатии любой клавиши или приостановке выполнения сценария. В этой статье показано, как пауза для ввода в Python может применяться в скрипте Python.
Приостановите скрипт, чтобы пользовательский ввод завершился:
Если вы хотите дождаться, пока пользователь нажмет любую клавишу перед завершением скрипта, вы можете вызвать Вход() метод с сообщением в конце скрипта. Следующий сценарий показывает, как можно приостановить завершение сценария и дождаться ввода пользователя. В Вход() метод примет строковые данные и сохранит их в переменной, название.
Если переменная не пуста, будет напечатано приветственное сообщение, иначе будет напечатано сообщение об ошибке. Затем будет напечатано сообщение с инструкциями, информирующее пользователя о необходимости нажатия любой клавиши. Сообщение о завершении будет напечатано, когда пользователь нажмет любую клавишу.
#!/ usr / bin / env python3
# Принимаем пользовательский ввод
name = input («Как вас зовут? «)
# Проверить введенное значение
если (имя !знак равно
# Распечатать приветственное сообщение, если значение не пустое
print («Здравствуйте,% s, добро пожаловать на наш сайт»% name)
еще:
# Распечатать пустое сообщение
print («Имя не может быть пустым.»)
# Подождите, пока пользовательский ввод завершит программу
input («Нажмите любую клавишу, чтобы завершить программу»)
# Распечатать прощальное сообщение
print («Увидимся позже.»)
Выход:
После выполнения скрипта он ожидает ввода строки. Здесь «Фахмида» набирается как строковое значение. Приветственное сообщение печатается со значением и ожидает нажатия любой клавиши. При нажатии любой клавиши печатается прощальное сообщение.
Приостановить ввод на определенный период времени
спать() может использоваться для приостановки ввода данных пользователем на определенный период времени. В следующем сценарии пользователю дается простая задача добавления. Метод sleep () используется здесь для ожидания пользователя в течение 5 секунд перед вводом ответа. Далее, если условие используется для проверки, ответ правильный или неправильный.
#!/ usr / bin / env python3
# Импортировать модуль времени
время импорта
# Распечатать сообщение
print («Решите задачу, чтобы доказать, что вы человек.»)
# Распечатать вопрос
print («Какая сумма 10 и 40? «)
# Распечатать сообщение об ожидании
print («Ожидание пяти секунд для расчета…»)
# Подождите 2 секунды
время.сон (5)
# Принимать ввод от пользователя
answer = input («Ваш ответ:»)
# Проверить ответ
если (int (ответ) == 50):
print («Ваш ответ правильный. Отличная работа.»)
еще:
print («Вы не смогли доказать.»)
Выход:
После запуска скрипта будет напечатан вопрос, в котором пользователю будет предложено подождать 5 секунд, чтобы узнать ответ. Здесь скрипт выполняется два раза с правильным ответом и неправильным ответом.
Приостановите скрипт, используя вход для отображения сообщений с инструкциями
Иногда требуется несколько раз приостановить скрипт, используя Вход() метод для разных целей. Процесс предоставления информации пользователю с помощью нескольких сообщений показан в следующем скрипте. Шаги по запуску любого скрипта Python показаны здесь с использованием нескольких Вход() метод. Пользователь должен нажать любую клавишу, чтобы показать следующие шаги. Первое Вход() используется для начала показа сообщения и последнего Вход() используется для отображения сообщения о завершении.
#!/ usr / bin / env python3
# Распечатать начальное сообщение
print («Шаги по запуску скрипта Python:»)
# Дождитесь любого нажатия клавиши
input («Нажмите любую клавишу, чтобы продолжить»)
# Дождитесь любого нажатия клавиши
input («Напишите сценарий в любом редакторе.»)
# Дождитесь любого нажатия клавиши
input («Откройте терминал, нажав Alt + Ctrl + T.»)
# Дождитесь любого нажатия клавиши
input («Тип: ‘имя сценария python.py ‘.»)
# Дождитесь любого нажатия клавиши
input («Вы получите результат, если скрипт не содержит ошибок.»)
# Дождитесь любого нажатия клавиши
input («Нажмите любую клавишу, чтобы завершить.»)
# Распечатать сообщение о завершении
print (» nДо свидания.»)
Выход:
Следующий вывод появится после запуска скрипта. Пользователь должен нажать любую клавишу пять раз, чтобы завершить выполнение скрипта.
Приостановить скрипт для определенного входного значения
Если вы хотите запускать некоторые сценарии непрерывно, пока пользователь не нажмет какую-либо конкретную клавишу, вам необходимо определить этот сценарий внутри любого бесконечного цикла. Эта задача показана в этом примере. Здесь объявлен бесконечный цикл while, который, как ожидается, будет принимать два числа и печатать сумму этих чисел на каждой итерации. В конце цикла он будет ждать, пока пользователь нажмет ‘у’, чтобы продолжить цикл и повторить сценарий снова.
#!/ usr / bin / env python3
# Определить бесконечный цикл
в то время как (Истина):
# Возьмем два целых числа
x = int (input («Введите число:»))
y = int (input («Введите число:»))
# Сложить два числа
результат = x + y
# Распечатать результат суммирования
print («Сумма% d и% d равна:% d»% (x, y, результат))
# Дождитесь продолжения ввода пользователя или завершите цикл
ans = input («Сделать еще раз? (да / нет) «)
# Завершить скрипт, если введено значение ‘n’
если (и.lower () == ‘n’):
перерыв
Выход:
Скрипт внутри цикла while выполняется здесь два раза. В первый раз после расчета суммы, ‘y’ нажимается и сценарий цикла повторяется снова. Когда пользователь нажал ‘п’ тогда цикл завершается.
Заключение:
Пауза при вводе данных пользователем — очень распространенное требование любого языка программирования. Различные цели паузы для ввода показаны в этой статье на очень простых примерах Python. Надеюсь, эта статья поможет читателю узнать, как используется пауза для ввода, и применить ее в скрипте, когда это необходимо.