课程名称
全能软件测试工程师
课程章节
进程与线程编程
课程讲师
大周
课程内容
多进程编程
对于操作系统来说,一个任务就是一个进程。
Python创建进程:
- 模块:
multiprocessing
- 方法:
multiprocessing.Process()
import time
#导入多进程包
from multiprocessing import Process
import os
#子进程
def target_function():
time.sleep(2)
print("子进程的ID:{}".format(os.getpid()))
if __name__ == "__main__":
#主进程
print("主进程ID:{}".format(os.getpid()))
ps = []
for i in range(10):
p = Process(target=target_function)
p.start()
ps.append(p)
# 让主进程等待子进程运行完成后再停止
for p in ps:
p.join()
多线程编程
以捡豆子比赛为例:
题目描述:幼儿园举办捡豆子比赛,三个小朋友一组,将地上的 30 颗豆子捡起来,每个小朋友捡起一颗豆子,随机耗时1-3秒,请运用多线程相关的知识,编程实现三个小朋友捡豆子,并看看谁捡的豆子多
题解:
# 存储排名
rank = {}
# 豆子列表
BEAN = list(range(1, 31))
def pick_bean_method():
pick_num = 0
while len(BEAN) > 0:
t = threading.current_thread()
pick_bean = random.choice(BEAN)
pick_num += 1
BEAN.remove(pick_bean)
print(f"{t.name}捡起了一颗豆子,总共捡起了{pick_num}颗豆子")
# 捡豆子消耗的时间1-3秒
pick_bean_consume_time = random.randint(1, 3)
time.sleep(pick_bean_consume_time)
rank[t.name] = pick_num
print(f"{t.name}总共捡了{pick_num}颗豆子")
class Child_A(threading.Thread):
def run(self):
pick_bean_method()
class Child_B(threading.Thread):
def run(self):
pick_bean_method()
class Child_C(threading.Thread):
def run(self):
pick_bean_method()
child_a = Child_A (name="chile_a")
child_b = Child_B (name="chile_b")
child_c = Child_C (name="chile_c")
child_a.start ()
child_b.start ()
child_c.start ()
child_a.join ()
child_b.join ()
child_c.join ()
result = sorted(rank.items(),key=lambda x : x[1],reverse=True)
print(f"比赛结果为:{result}")
课程收获
该章节的知识点相信在日后的工作中会经常用到。
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦