第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

ThreadPoolExeturor 的未來永遠不會結(jié)束

ThreadPoolExeturor 的未來永遠不會結(jié)束

哈士奇WWW 2023-07-11 15:39:55
我正在為一個程序編寫一個后端,該程序需要能夠 ping 網(wǎng)絡上的所有設備以查看它們是否存在。該后端在 Flask 套接字上運行。我編寫了一個簡單的測試腳本,它使用 threadExecutor 和 futures 來加速該過程。import platformimport subprocessimport netifaces as niimport concurrent.futuresimport socketbaseIP = ni.ifaddresses('enp4s0')[ni.AF_INET][0]['addr']prefix = '.'.join(baseIP.split('.')[0:3])aliveIPs = []def ping(ip):    command = ['ping', '-c 1', '-w 5', ip]    print(ip)    if(subprocess.call(command) == 0):        return socket.gethostbyaddr(ip)    else:        return ''ips = [prefix + '.' +str(i) for i in range(0,255)]with concurrent.futures.ThreadPoolExecutor() as executor:    futures = []    for ip in ips:        futures.append(executor.submit(ping, ip=ip))    for future in concurrent.futures.as_completed(futures):        res = future.result()        if(res != ''):            aliveIPs.append(res)print(aliveIPs)這段代碼在我的電腦上使用 python3 運行得很好,并為我提供了網(wǎng)絡上的設備列表。但是當我在我的 Flask 應用程序中實現(xiàn)這段代碼時,future 永遠不會結(jié)束,導致它掛在它嘗試掃描的第一個 ip 上。以下代碼來自我的燒瓶應用程序。def ping(ip):    print(ip)    proc = subprocess.run(['ping', '-c 1', '-w 5', ip])    if(proc == 0):        print("alive")        return socket.gethostbyaddr(ip)    else:        print("none")        return ''"""gets a list of available hosts in the network for a connection"""def update_worker_list(executor):    print("updating")    network_device = get_network_info()['net_name']    ip = ni.ifaddresses(network_device)[ni.AF_INET][0]['addr']    ipPrefix = '.'.join(ip.split('.')[0:3])    alive_ips = []    ips = [ipPrefix + '.' + str(i) for i in range(0, 255)]    futures = []    for ip in ips:        futures.append(executor.submit(ping, ip=ip))    for future in concurrent.futures.as_completed(futures):        res = future.result()        if(res != ''):            alive_ips.append(res)    print(alive_ips)我正在尋找任何關(guān)于為什么未來無法解決的想法。
查看完整描述

1 回答

?
森林海

TA貢獻2011條經(jīng)驗 獲得超2個贊

因此,在深入研究flask-socketIO的源代碼后,我發(fā)現(xiàn)socketIO喜歡占用線程。這意味著您必須自己使用 gevent 或 eventlet 自行修補它以使用另一個。


查看完整回答
反對 回復 2023-07-11
  • 1 回答
  • 0 關(guān)注
  • 129 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號