6
我写了一个测试程序,它有两个进程。父进程从队列中获取数据,并且子进程将数据放入其中。有一个信号处理程序告诉程序退出。但是,当我将信号SIGTERM发送到我打印的pid(子进程)时,它不会退出,并且它似乎有一个死锁。为什么这个python程序有时无法退出?
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()
哇......有了100,000,000,你不是在开玩笑,你呢? – cwallenpoole
@cwallenpoole我只是想运行很长一段时间.... – renenglish
那么,它已经在后台运行了20分钟,还没有达到50,000,000还 – cwallenpoole