我在使用r2pipe(Radare2的API)和多处理时遇到了问题池.map函数。我面临的问题是应用程序挂起池.连接(). 你知道吗
我希望通过多处理.dummy类,以便通过r2pipe快速计算函数。我尝试使用Manager类将r2pipe对象作为命名空间传递。我也尝试过使用事件,但这些似乎都不起作用。你知道吗
class Test:
def __init__(self, filename=None):
if filename:
self.r2 = r2pipe.open(filename)
else:
self.r2 = r2pipe.open()
self.r2.cmd('aaa')
def t_func(self, args):
f = args[0]
r2_ns = args[1]
print('afbj @ {}'.format(f['name']))
try:
bb = r2_ns.cmdj('afbj @ {}'.format(f['name']))
if bb:
return bb[0]['addr']
else:
return None
except Exception as e:
print(e)
return None
def thread(self):
funcs = self.r2.cmdj('aflj')
mgr = ThreadMgr()
ns = mgr.Namespace()
ns.r2 = self.r2
pool = ThreadPool(2)
results = pool.map(self.t_func, product(funcs, [ns.r2]))
pool.close()
pool.join()
print(list(results))
这是我正在使用的类。我打电话给测试线程我的主要职能。你知道吗
我希望应用程序打印出它将在r2pipe afbj @ entry0
中运行的命令,然后打印出包含第一个基本块地址[40000, 50000, ...]
的结果列表。你知道吗
应用程序确实打印出要运行的命令,但在打印出结果之前挂起。你知道吗
环境
解决方案
示例
较长的示例
简短的例子
相关问题 更多 >
编程相关推荐