Python报错AssertionError: can only test a child process
解决方法
1.num_workers=2
把num_workers由2改为0
2.from tqdm.auto import tqdm
替换为
from tqdm import tqdm
3.如果Debug过程报错,重新运行时需要结束上一次Debug的进程
在终端输入
ps -ef | grep multiprocess | awk ‘{print $2}' | xargs kill -9
以上输出中会多出来一个No such process的错误,可以忽略,出现原因是grep train也会产生一个进程,被自己过滤出来。
使用Run而非Debug时不存在这个问题
packetdrill: python的断言报错AssertionError
写自定义脚本遇到的一个小问题,在这打个标记!
packetdrill测试时,终端总会在自定义脚本的某python语句上报错,开始以为是自己的python语法问题,遂逐个检查。
后经调试,发现终端上的AssertionError是实际结果和脚本预期结果不同,packetdrill报告使用者的。
这说明:预期的assert TCP_INFO值错误。
贴张图
packetdrill 无法得到对应python语句声明的实际信息变量,如上图的tcpi_snd_cwnd。
图上只能说明脚本断言的tcpi_snd_cwnd在真实环境下不对!
蓝瘦啊,只能寄希望于google的大佬可以继续迭代packetdrill了。
后序
知道了怎么得到真实环境下的脚本断言信息了
只需要将python 语句由
%{ assert tcpi_snd_cwnd == 10}%
变更为:
%{ assert tcpi_snd_cwnd ==10,tcpi_snd_cwnd}%
得到的结果既是下图
AssertionError: 真实值
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持。
您可能感兴趣的文章: