亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

【金秋打卡】第8天+多進程和線程編程

標簽:
Python

课程名称

全能软件测试工程师

课程章节

进程与线程编程

课程讲师

大周

课程内容

多进程编程

对于操作系统来说,一个任务就是一个进程。
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 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消