马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 wcq15759797758 于 2021-7-25 16:12 编辑
一.单进程单线程import time
def work(n):
print(f'{n}打电话')
time.sleep(2)
print(f'{n}电话结束')
uesrlist = ['刘德华','张学友','梁朝伟']
for i in uesrlist:
work(i)
二.多进程from multiprocessing import Process
import time,os
uesrlist = ['刘德华','张学友','梁朝伟']
def work(n):
print(f'{n}打电话,进程号为:{os.getpid()}')
time.sleep(2)
print(f'{n}电话结束,进程号为:{os.getpid()}')
def pol():
plist = []
for item in uesrlist:
#循环创建进程 target 当前要执行的函数
p = Process(target=work,args=(item,))
#启动进程
p.start()
#把进程加入到列表当中
plist.append(p)
#阻塞终止进程的执行
[i.join() for i in plist]
if __name__ == '__main__':
pol()
三.多线程import time ,os
import threading
uesrlist = ['刘德华','张学友','梁朝伟']
def work(n):
print(f'{n}打电话,进程号为:{os.getpid()},线程号为:{threading.current_thread()}')
time.sleep(2)
print(f'{n}电话结束,进程号为:{os.getpid()},线程号为:{threading.current_thread()}')
def pol():
plist = []
for item in uesrlist:
#循环创建线程 target 当前要执行的函数
p = threading.Thread(target=work,args=(item,))
#生成线程
p.start()
#把进程加入到列表当中
plist.append(p)
#阻塞终止线程的执行
[i.join() for i in plist]
if __name__ == '__main__':
pol()
四.线程池import time
import threading
from concurrent.futures import ThreadPoolExecutor
uesrlist = ['刘德华','张学友','梁朝伟','周杰伦','苏炳添']
def work(n):
print(f'{n}打电话,线程号为:{threading.current_thread()}')
time.sleep(2)
print(f'{n}电话结束,线程号为:{threading.current_thread()}')
def pol():
# 1 . 创建线程池
pool = ThreadPoolExecutor(max_workers=3)
# 2 . 循环指派任务 和 参数
[pool.submit(work,user) for user in uesrlist]
# 3 . 关闭线程池
pool.shutdown
if __name__ == '__main__':
pol()
|