# coding=utf-8 ''' Created on 2021年8月25日 @author: Jason Wang ''' import multiprocessing, time
defgetHtml(seconds): time.sleep(seconds) print("sub process sleep {}".format(seconds)) return seconds
if __name__ == "__main__": process1 = multiprocessing.Process(target=getHtml, args=(2,)) process1.start() print("sub process pid is {}".format(process1.pid)) process1.join() print("main process done")
defrun(self): time.sleep(self.seconds) print("sub process sleep {}".format(self.seconds)) return self.seconds
if __name__ == "__main__": process1 = MyProcess(2) process1.start() print("sub process pid is {}".format(process1.pid)) process1.join() print("main process done")
使用线程池:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
# coding=utf-8 ''' Created on 2021年8月25日 @author: Jason Wang ''' import multiprocessing, time
defgetHtml(seconds): time.sleep(seconds) print("sub process sleep {}".format(seconds)) return seconds
if __name__ == "__main__": pool = multiprocessing.Pool(multiprocessing.cpu_count()) #参数为同时执行最大的进程数 result = pool.apply_async(getHtml, args=(2,)) #添加进程 pool.close() pool.join() #调用join前必须先关闭pool print(result.get()) #获取进程的返回结果
进程池中批量添加任务并获取返回结果:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
# coding=utf-8 ''' Created on 2021年8月25日 @author: Jason Wang ''' import multiprocessing, time
defgetHtml(seconds): time.sleep(seconds) print("sub process sleep {}".format(seconds)) return seconds
if __name__ == "__main__": pool = multiprocessing.Pool(multiprocessing.cpu_count()) #参数为同时执行最大的进程数 #imap是按照添加的顺序返回迭代对象,使用imap_unordered,可以按照进程执行完毕的先后顺序返回迭代对象 for result in pool.imap(getHtml, [1,5,3]): print(result)