if __name__ == '__main__':
pool = multiprocessing.Pool(processes=4)
for i in range (10):
ip = '192.168.1.' + str(i)
print(ip)
time.sleep(5)
我需要例如这样工作:
192.168.1.0
192.168.1.1
192.168.1.2
192.168.1.3
sleep 5
192.168.1.4
192.168.1.5
192.168.1.6
192.168.1.7
但是实际执行结果为每输出1个IP,就会休眠5秒钟
我需要历遍一个清单,对每一条执行相同的操作,请问该怎么实现呢?
需要使用pool.apply()或者pool.apply_async()维持进程啊
import time
import multiprocessing
def do(i,ip):
name = multiprocessing.current_process().name
print(name)
print(i,ip)
time.sleep(3)
if __name__ == '__main__':
pool = multiprocessing.Pool(processes=4)
for i in range (10):
ip = '192.168.1.' + str(i)
pool.apply_async(do, (i,ip))
pool.close()
pool.join()
#out
#SpawnPoolWorker-1
0 192.168.1.0
SpawnPoolWorker-2
1 192.168.1.1
SpawnPoolWorker-3
2 192.168.1.2
SpawnPoolWorker-4
3 192.168.1.3
SpawnPoolWorker-1
4 192.168.1.4
SpawnPoolWorker-2
5 192.168.1.5
SpawnPoolWorker-3
6 192.168.1.6
SpawnPoolWorker-4
7 192.168.1.7
SpawnPoolWorker-1
8 192.168.1.8
SpawnPoolWorker-2
9 192.168.1.9
进程已结束,退出代码为 0