import multiprocessing
import time
def get_html(n):
time.sleep(n)
print('process is complete')
return n
if __name__ == '__main__':
process1 = multiprocessing.Process(target=get_html, args=(2, ))
process1.start()
print(process1.pid) # 获取多进程的pid 在start之后才会有进程pid
process1.join()
print('')
# 使用进程池
pool = multiprocessing.Pool(multiprocessing.cpu_count()) # multiprocessing.cpu_count获取cpu数量
result = pool.apply_async(get_html, args=(3, )) # 异步执行一个任务
# 等待所有任务完成
pool.close() # join之前必须先close 否则会报错的
pool.join()
print(result.get()) # 获取执行函数返回的结果
pool = multiprocessing.Pool(multiprocessing.cpu_count()) # multiprocessing.cpu_count获取cpu数量
# imap方法
for result in pool.imap(get_html, [3, 43, 45]): # 会根据可迭代对象的参数 打印执行结果
print(result)
for result in pool.imap_unordered(get_html, [3, 5, 6]): # 会根据谁先执行完成 打印执行结果
print(result)
网友评论