我正在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()
函數,那麼暫停和恢復前一個等等...
要隨機啓動的功能我我以爲我可以使用裏面有函數的字典並隨機選擇其中的一個。
我想我可以用線程做到這一點,但由於我的機器人正在使用多處理,它會是一個正確的選擇使用多線程和多處理?
我使用多處理器同時運行多個機器人,並通過鏈接到接口的主Python腳本來管理它們。每個bot實例都連接到一個不同的帳戶。
如果我使用多線程,我該如何使函數停止在某些定義點而不是隨機?
例如:
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來暫停?如果沒有其他功能需要運行,請調用相同的功能。這將使它成爲每個機器人的一個線程 – user1827356
請參閱[關於協程和併發的好奇課程](http://www.dabeaz.com/coroutines/) –