小编Osc*_*car的帖子

函数返回时停止SIGALRM

我有一个自己似乎无法解决的问题。我正在写一个小的python脚本,我想知道为什么signal.alarm返回它的函数后我仍然可以工作。这是代码:

class AlarmException(Exception):
    pass

def alarmHandler(signum, frame):
    raise AlarmException

def startGame():
    import signal
    signal.signal(signal.SIGALRM, alarmHandler)
    signal.alarm(5)
    try:
        # some code...
        return 1
    except AlarmException:
        # some code...
        return -1

def main():
    printHeader()
    keepPlaying = True
    while keepPlaying:
        score = 0
        for level in range(1):
            score += startGame()
        answer = raw_input('Would you like to keep playing ? (Y/N)\n')
        keepPlaying = answer in ('Y', 'y')
Run Code Online (Sandbox Code Playgroud)

因此问题在于,当我的startGame()函数返回时,SIGALRM仍在递减并关闭程序。这是回溯:

Would you like to keep playing ? (Y/N)
Traceback (most recent call …
Run Code Online (Sandbox Code Playgroud)

python signals python-2.7

2
推荐指数
1
解决办法
1206
查看次数

Python argparse,有两个可选参数,至少有一个是必需的

我在我的python程序中遇到问题,我有两个可选参数,问题是必须至少有一个这两个参数必须使用但是两个参数不能一起传递,有没有办法这样做与argparse?

这是我目前使用的代码:

parser = argparse.ArgumentParser(description='worker')
arser.add_argument('-i', "--item", type=bool, default=False, required=False)
parser.add_argument('-o', "--offer", type=bool, default=False, required=False)
Run Code Online (Sandbox Code Playgroud)

以下是我希望如何工作的一些示例:

  • ./main.py -i True =>好的

  • ./main.py -o True =>好的

  • ./main.py -o True -i True =>不行

python argparse

0
推荐指数
1
解决办法
1123
查看次数

标签 统计

python ×2

argparse ×1

python-2.7 ×1

signals ×1