使用NetfilterQueue延迟函数的多重处理



我无法将多处理器与Netfilter队列一起使用。代码和错误如下:

错误:类型错误:print_and_accept((缺少1个必需的参数:"pkt">


nfqueue = NetfilterQueue()
nfqueue.bind(1, print_and_accept)
try:
nfqueue.run()
except KeyboardInterrupt:
print('')
global a
time.sleep(ransecs)#ADD DELAY calculated by delay_calc()
print(pkt)
pkt.accept()
#delay_calc()
nfqueue.unbind()
p2 = multiprocessing.Process(target=print_and_accept())
if __name__ == '__main__':
p2.start()```

多处理库给出了这个例子:

p = Process(target=f, args=('bob',))

由于Process类的格式化方式,您必须将多处理行更改为:

p2 = multiprocessing.Process(target=print_and_accept, args=('args',))

问题产生于将括号放在函数引用之后,这会调用函数并导致错误。删除这些参数并根据需要添加参数(以元组的形式(应该可以解决您的问题。

在下面评论任何问题。

最新更新