Я пишу бота на питоне и «очеловечиваю» его Мне нужно приостановить и возобновить функции случайным образом. Функции могут быть приостановлены и возобновлены только в некоторых определенных точках.Пауза и возобновление функции
бот сделан из различных функций, как
do_action1(*args)
do_action2(*args)
do_action3(*args)
...
start_bot()
stop_bot()
Функция start_bot()
вызовов do_action1()
, do_action2()
, ... в порядке и дает им *args
.
мне нужно найти способ, чтобы начать do_actionX()
функцию случайным образом, а в некоторых точках паузы и запустить другую случайную do_actionX()
функции затем сделать паузу и возобновить предыдущую и так далее ...
Чтобы запустить функцию случайным образом я подумал, что я могу использовать словарь с функциями внутри и выбирать один из них случайным образом.
Я думаю, что могу сделать это с помощью потоков, но так как мой бот использует многопроцессорность, было бы правильным выбором для многопоточности и многопроцессорности?
Я использую многопроцессорную систему для одновременного запуска нескольких ботов и управления ими из основного сценария Python, связанного с интерфейсом. Каждый экземпляр бота подключается к другой учетной записи.
Если я использую многопоточность, как я могу заставить функцию останавливаться в определенных точках, а не беспорядочно?
Например:
def do_action1(*args):
print("something")
# do something else
# <--- at this point the function could be paused
print("something")
# <--- at this pint the function cannot be paused!
print("else")
# <--- and here the function could be paused again
Времена, что функция будет приостановлена, должны быть случайными. Есть ли способ сделать это?
Соответствуют ли темы правильному подходу к этой проблеме?
Почему бы не использовать выход внутри функции для паузы? И вспомните ту же функцию, если не нужно запускать другую функцию. Это сделало бы одну нить за бот – user1827356
См. [Любопытный курс по коротинам и параллелизму] (http://www.dabeaz.com/coroutines/) –