赞
踩
出错代码:
- if __name__ == '__main__':
- ip_arr=get_ip_list()
- pool=Pool(processes=4)
- for temp in ip_arr:
- res = pool.apply_async(check_ip,(temp,)).get()
- if res :
- ip_list.append(res )
- pool.close()
- pool.join()
- print(arr)
这段代码运行会发现是阻塞运行的
原因是apply_async后面 get()等待线程运行结束才会下一个
而apply_async刚好又是异步以主程序为主的,所以这段代码实际变成了阻塞
改成:
- if __name__ == '__main__':
- ip_arr=get_ip_list()
- pool=Pool(processes=4)
- for temp in ip_arr:
- arr.append(pool.apply_async(check_ip,(temp,)))
- pool.close()
- pool.join()
- ip_list=[]
- for temp in arr:
- if temp.get():
- ip_list.append(temp.get())
- print(ip_list,len(ip_list))
当然有更好的方法来获取他的返回值,只是这个方法比较方便~
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。