gpt4 book ai didi

python - 为什么这个python程序有时会退出失败?

转载 作者:太空狗 更新时间:2023-10-30 00:18:12 24 4
gpt4 key购买 nike

我写了一个测试程序,里面有两个进程。父进程从队列中获取数据,子进程将数据放入其中。有一个信号处理程序告诉程序退出。但是,当我将信号 SIGTERM 发送到我打印的 pid(子进程)时,它有时不会退出,而且它似乎出现了死锁。

import os
import sys
import multiprocessing
import time
import signal

bStop = False
def worker(que):
signal.signal(signal.SIGTERM,sighandler)
print 'worker:',os.getpid()
for i in range(100000000):
que.put(i)

print 'STOP'

def sighandler(num,frame):
print 'catch signal'
q.put('STOP')
sys.exit(0)
q = multiprocessing.Queue(100)
p = multiprocessing.Process(target=worker,args=(q,))
p.start()

for item in iter(q.get,'STOP'):
print 'get',item
pass
print 'main stop'
p.join()

最佳答案

除非你运行的是 python 3,否则你应该使用 xrange 而不是 range 来处理这么大的循环。一旦超过特定的列表大小,Python 就会变得窒息,因此到那时您真的需要转向生成器。

这很可能就是您现在看到的问题。

关于python - 为什么这个python程序有时会退出失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6410207/

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