未执行的未来执行人
future executor not performed
未来不会在以下代码段中被调用:
def main():
if not amiadmin():
print ("You are not superuser")
raise PermissionError
dumpfile = open('filename', mode='w')
fileiolock = threading.RLock()
(ip,) = struct.unpack ("!L", socket.inet_aton("""some ip address"""))
# sorry, this hack requires Internet addresses be integers
ips = genlistofipaddrs(ip, 8)
ips_converted = [ socket.inet_ntoa(struct.pack ("!L", ip)) for ip in ips ]
ping = icmp(0)
# reverse conversion from integers
executor = concurrent.futures.ThreadPoolExecutor(max_workers=ThreadLimit)
with executor:
futs = [ executor.submit(IPScanner, ping, ip, dumpfile, fileiolock)
for ip in ips_converted]
concurrent.futures.wait(futs,return_when=ALL_COMPLETED)
print ("Good job")
我的真实代码中有一个真实的 B-class IPv4 地址,而不是 some ip address
。为什么未来没有被调用?
没有引发异常,程序成功退出。
根据@dano 的评论,将 executor.submit(IPScanner, (ping, ip, dump file, fileio lock)) 替换为 executor.submit(IP Scanner, ping, ip, dumpfile, fileio lock)现在可以使用了。
未来不会在以下代码段中被调用:
def main():
if not amiadmin():
print ("You are not superuser")
raise PermissionError
dumpfile = open('filename', mode='w')
fileiolock = threading.RLock()
(ip,) = struct.unpack ("!L", socket.inet_aton("""some ip address"""))
# sorry, this hack requires Internet addresses be integers
ips = genlistofipaddrs(ip, 8)
ips_converted = [ socket.inet_ntoa(struct.pack ("!L", ip)) for ip in ips ]
ping = icmp(0)
# reverse conversion from integers
executor = concurrent.futures.ThreadPoolExecutor(max_workers=ThreadLimit)
with executor:
futs = [ executor.submit(IPScanner, ping, ip, dumpfile, fileiolock)
for ip in ips_converted]
concurrent.futures.wait(futs,return_when=ALL_COMPLETED)
print ("Good job")
我的真实代码中有一个真实的 B-class IPv4 地址,而不是 some ip address
。为什么未来没有被调用?
没有引发异常,程序成功退出。
根据@dano 的评论,将 executor.submit(IPScanner, (ping, ip, dump file, fileio lock)) 替换为 executor.submit(IP Scanner, ping, ip, dumpfile, fileio lock)现在可以使用了。