Python 从线程结束父进程

Python end parent process from thread

我的目标是创建一个新进程,它将循环中的用户输入数字并显示它的平方。如果用户在 10 秒内没有输入数字,则进程应该结束(不是主进程)。我正在使用 threading.Timermultiprocessing

尝试过代码

from threading import Timer
import multiprocessing as mp
import time

def foo(stdin):
    while True:
        t = Timer(10, exit, ())
        t.start()
        print 'Enter a No. in 10 Secs: ',
        num = int(stdin.readline())
        t.cancel()
        print 'Square of', num, 'is', num*num

if __name__ == '__main__':
    newstdin = os.fdopen(os.dup(sys.stdin.fileno()))
    proc1 = mp.Process(target = foo, args = (newstdin, ))
    proc1.start()
    proc1.join()
    print "Exit"
    newstdin.close()

但它不起作用。我尝试使用 sys.exit 而不是 exit,将 proc1 作为 global 并尝试了 proc1.terminate,但仍然没有解决方案。

已将 exit 替换为 os._exit,它按预期工作。

t = Timer(10, os._exit, [0])

os._exit 恰好是 1 argument,因此我们必须在列表中提及 0。 (在threading.Timer中传递参数给函数,参数应该在list中。)