必做題
缺點:1、使用者獨佔全機2、cpu等待人工操作
省了大量手工操作
1、單道批處理系統:沒有併發性
特點:自動性、順序性、單道性
缺點:i/o操作時,cpu無事可做
2、多道批處理系統:具有併發性
特點:多道性、巨集觀上多工並行、微觀上多工分片序列
優點:由於提高了cpu、記憶體和i/o裝置的利用率,因此系統吞吐得到提高
需要解決的問題:
處理及管理問題、記憶體管理問題、i/o裝置管理問題、檔案管理問題和作業管理問題
缺點:無互動能力
特點:多路性、獨立性(巨集觀)、及時性和互動性
特點:多路性、獨立性、及時性和可靠性
單使用者單任務系統(dos)、單使用者多工系統(windows)、多使用者多工系統(linux、uinux)
先來先服務時間段的先服務
時間片輪**+多級反饋佇列
等等……
乙個任務在占用cpu時,輸入輸出裝置不會空閒,為下乙個任務的執行做準備
同步:可以理解為在執行完乙個函式或方法之後,一直等待系統返回值或訊息,這時程式是出於阻塞的,只有接收到返回的值或訊息後才往下執行其他的命令。非同步:執行完函式或方法後,不必阻塞性地等待返回值或訊息,只需要向系統委託乙個非同步過程,那麼當系統接收到返回值或訊息時,系統會自動觸發委託的非同步過程,從而完成乙個完整的流程。
阻塞:阻塞態
非阻塞:就緒態、執行態
# 第一種方式 匯入模組的方式
from multiprocessing import process
import time
def task(name):
print('%s is running'%name)
time.sleep(3)
print('%s is over'%name)
if __name__ == '__main__':
p = process(target=task, args=('pipi',))
p.start()
print('>>>>>')
# 第二種方式 類的繼承
from multiprocessing import process
import time
class myprocess(process):
def run(self):
print('hello bf girl')
time.sleep(1)
print('get out!')
if __name__ == '__main__':
p = myprocess()
p.start()
print('>>>>>')
from multiprocessing import process
from multiprocessing import joinablequeue
import time
import random
def producer(name, food, q):
for i in range(4):
data = f''
time.sleep(random.uniform(1, 2))
print(f'生產者生產了')
q.put(data)
def customer(name, q):
while true:
data = q.get()
time.sleep(random.choice([1, 2]))
print(f'消費者購買了')
q.task_done() # 沒執行一次佇列資料計數器-1
if __name__ == '__main__':
q = joinablequeue()
p1 = process(target=producer, args=('商家1', '包子', q))
p2 = process(target=producer, args=('商家2', '泔水', q))
c1 = process(target=customer, args=('使用者1', q))
c2 = process(target=customer, args=('使用者2', q))
c1.daemon = true
c2.daemon = true
p1.start()
p2.start()
c1.start()
c2.start()
p1.join()
p2.join()
q.join()
import socket
from threading import thread
from multiprocessing import process
server =socket.socket()
server.bind(('127.0.0.1',8080))
server.listen(5)
def talk(conn):
# 通訊迴圈
while true:
try:
data = conn.recv(1024)
if len(data) == 0: break
print(data.decode('utf-8'))
conn.send(data.upper())
except connectionreseterror as e:
print(e)
break
conn.close()
# 鏈結迴圈
while true:
conn, addr = server.accept() # 接客
t = thread(target=talk,args=(conn,))
# t = process(target=talk,args=(conn,))
t.start()
"""客戶端"""
import socket
client = socket.socket()
client.connect(('127.0.0.1',8080))
while true:
client.send(b'hello world')
data = client.recv(1024)
print(data.decode('utf-8'))
選做題 python常見基礎小練習
1.輸入乙個年份,判斷是否為閏年。條件1 不能被100整除且能被4整除 條件2 被400整除 世紀年 year int input 請輸入乙個年份 if year 4 0 and year 100 0 print d年是閏年 year elif year 400 0 print d年是閏年 year...
python基礎小練習(1)
1 int 3.14159 float 3 會輸出什麼結果?type int 3.14159 type float 3 的結果又是什麼?前後結果是否一樣,為什麼?int 3.14159 float 3 type int 3.14159 type float 3 前後結果不一樣,因為前者等號兩邊輸出的...
python基礎 綜合小練習
在猜年齡的基礎上編寫登入 註冊方法,並且把猜年齡遊戲分函式處理,如 登入函式 註冊函式 猜年齡函式 選擇獎品函式 def register 註冊功能 count 0 while count 3 username inp input 請輸入你的使用者名稱 pwd inp input 請輸入你的密碼 r...