我正在用python编写一个bot,为了“人性化”它,我需要随机地暂停和恢复函数。 只能在某些定义的点暂停和恢复函数。在
机器人由各种功能组成,比如
do_action1(*args)
do_action2(*args)
do_action3(*args)
...
start_bot()
stop_bot()
函数start_bot()
调用do_action1()
,do_action2()
。。。并给出*args
。
我需要找到一种随机启动do_actionX()
函数的方法,在某些情况下暂停它并运行另一个随机do_actionX()
函数,然后暂停它并继续上一个函数,依此类推。。。在
要随机启动一个函数,我想我可以使用一个包含函数的字典,然后随机选择其中一个。在
我想我可以用线程来实现这一点,但是既然我的机器人使用多处理,那么将多线程和多处理一起使用是不是一个正确的选择?
我使用多处理来同时运行多个bot,并从链接到接口的主Python脚本管理它们。每个bot实例连接到不同的帐户。在
如果我使用多线程,如何使函数停止在一些定义的点,而不是随机的?在
例如:
^{pr2}$函数暂停的时间必须是随机的。有办法吗?
线程是解决这个问题的正确方法吗?在
线程是一种很好的方法。要暂停函数,请使用^{} (基于How can I make a time delay in Python?):
我在这个例子中使用了^{} ,但是您可以随意地使用^{} 模块或任何其他您喜欢的东西来设置区间的随机性。在
线程解决方案将允许不同的操作同时运行。如果不允许这样做,请使用一个线程并按照user1827356的建议使用
^{pr2}$yield
:请注意,在本例中,您的操作是生成器。它们基本上是运行您定义的代码的对象,并在每次碰到
yield
关键字时存储状态(暂停)。对于单线程应用程序,这可能是最好的方法。在您可以使用
yield
关键字来创建co例程。以下是一个例子:相关问题 更多 >
编程相关推荐