親プロセスが子プロセスを終了しようとしたときに、子プロセスでコードを実行する方法があるかどうかを知りたいです。多分を書く方法はありException
ますか?
私のコードは次のようになります。
main_process.py
import Process from multiprocessing
def main():
p1 = Process(target = child, args = (arg1, ))
p1.start()
p1.daemon = True
#blah blah blah code here
sleep(5)
p1.terminate()
def child(arg1):
#blah blah blah
itemToSend = {}
#more blah blah
snmpEngine.transportDispatcher.jobStarted(1) # this job would never finish
try:
snmpEngine.transportDispatcher.runDispatcher()
except:
snmpEngine.transportDispatcher.closeDispatcher()
raise
ジョブが終了しないため、子プロセスは実行され続けます。子プロセスが単独で終了することはないため、親プロセスから終了する必要があります。itemToSend
ただし、子プロセスが終了する前に親プロセスに送信したい。return
どういうわけか親プロセスにすることはできますか?
更新:モジュールの仕組みrunDispatcher()
を説明しましょうpysnmp
def runDispatcher():
while jobsArePending(): # jobs are always pending because of jobStarted() function
loop()
def jobStarted(jobId):
if jobId in jobs: #This way there's always 1 job remaining
jobs[jobId] = jobs[jobId] + 1
これは非常にイライラします。これらすべてを行う代わりに、独自に snmp トラップ リスナーを作成することは可能ですか? 適切なリソースを教えてもらえますか?