【发布时间】:2015-12-02 20:27:57
【问题描述】:
我正在用 python 编写一个机器人,为了“人性化”它,我需要随机暂停和恢复功能。 功能只能在某些定义的点暂停和恢复。
机器人由各种功能组成,例如
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
函数暂停的时间必须是随机的。有没有办法做到这一点?
线程是解决这个问题的正确方法吗?
【问题讨论】:
-
为什么不在函数内部使用yield来暂停呢?如果不需要运行其他函数,则调用相同的函数。这将使它成为每个机器人一个线程
标签: python multithreading random artificial-intelligence