gpt4 book ai didi

python - 在一个模块内共享状态的 Pythonic 方式是什么?

转载 作者:太空狗 更新时间:2023-10-30 01:01:05 25 4
gpt4 key购买 nike

我需要在我的代码中处理信号,我正在使用全局函数在函数之间共享状态:

exit = False

def setup_handler():
signal.signal(signal.SIGTERM, handler)

def handler(num, frame):
global exit
exit = True

def my_main():
global exit
while not exit:
do_something()

if __name__ == '__main__':
setup_handler()
my_main()

在这种情况下有没有办法避免使用全局变量?在这种情况下共享状态的最佳方式是什么?

最佳答案

您可以使用类来封装全局模块,但是否值得这样做取决于您真正想要避免全局的程度。

class EventLoop(object):
def __init__(self):
self.exit = False

def run(self):
while not self.exit:
do_something()

def handler(self):
self.exit = True

# It's up to you if you want an EventLoop instance
# as an argument, or just a reference to the instance's
# handler method.
def setup_handler(event_loop):
signal.signal(signal.SIGTERM, event_loop.handler)


if __name__ == '__main__':
loop = EventLoop()
setup_handler(loop)
loop.run()

关于python - 在一个模块内共享状态的 Pythonic 方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30079786/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com