課堂案例一、
強大manage
from multiprocessing import manager, process
def worker(dt, lt):
for i in range(10):
dt[i] = i*i
lt += [x for x in range(11, 16)]
if __name__ == '__main__':
manager = manager()
dt = manager.dict()
lt = manager.list()
p = process(target=worker, args=(dt, lt))
p.start()
p.join(timeout=3)
print(dt)
print(lt)
課堂案例二、
def worker(dt, lt):
for i in range(10):
key = "args" + str(i)
dt[key] = i*i
print(dt)
lt += [x for x in range(10)]
print(lt)
worker(dict(), list())
課堂案例三、
import time
import multiprocessing
def fun(msg):
print("#########start#### ".format(msg))
time.sleep(3)
print("#########end###### ".format(msg))
課堂案例四、
多執行緒 密集型io
多執行緒的實現有兩種方法:
方法1:
和多程序類似
方法2:
通過繼承的方式
import threading
def worker(args):
print("開始子程序 ".format(args))
print("結束子程序 ".format(args))
if __name__ == '__main__':
print("start main")
t1 = threading.thread(target=worker, args=(1,))
t2 = threading.thread(target=worker, args=(2,))
t1.start()
t2.start()
print("end main")
課堂案例五、
多執行緒 密集型io
多執行緒的實現有兩種方法:
方法1:
和多程序類似
方法2:
通過繼承的方式
import threading
import time
class hello(threading.thread):
def __init__(self, args):
super(hello, self).__init__()
self.args = args
def run(self):
print("開始子程序 ".format(self.args))
time.sleep(1)
print("結束子程序 ".format(self.args))
if __name__ == '__main__':
a = 1
print("start main")
t1 = hello(1)
t2 = hello(2)
t1.start()
t2.start()
print("end main")
課堂案例六、
多執行緒 密集型io
多執行緒的實現有兩種方法:
方法1:
和多程序類似
方法2:
通過繼承的方式
'''import threading
import time
class hello(threading.thread):
def __init__(self, args):
super(hello, self).__init__()
self.args = args
global a
print("a = ".format(a))
a += 1
def run(self):
print("開始子程序 ".format(self.args))
print("結束子程序 ".format(self.args))
if __name__ == '__main__':
a = 1
print("start main")
t1 = hello(5)
time.sleep(3)
t2 = hello(5)
t1.start()
t2.start()
print("#####a = ####".format(a))
print("end main")
課堂案例七、
import threading
lock = threading.lock()
lock.acquire()#獲取鎖
lock.release()#釋放鎖
# with lock:
# time.sleep(3)
# with open("1.txt", "w") as f:
# f.close
課堂案例八、
pip install threadpool
from threadpool import *
pool = threadpool(size)
requests = makerequests()
import threadpool
def hello(m, n, o):
print("m = n= o=".format(m, n, o))
if __name__ == '__main__':
# 方法1
lst_vars_1 = ['1', '2', '3']
lst_vars_2 = ['4', '5', '6']
func_var = [(lst_vars_1, none), (lst_vars_2, none)]
# 方法2
# dict_vars_1 =
# dict_vars_2 =
# func_var = [(none, dict_vars_1), (none, dict_vars_2)]
pool = threadpool.threadpool(2)
requests = threadpool.makerequests(hello, func_var)
[pool.putrequest(req) for req in requests]
pool.wait()
多執行緒 多程序?
這幾天在思考如何改進原型在多個客戶端的情況下的效能,特地溫習了一下多程序和多執行緒的一些知識。在linux下程序的程序和執行緒在核心看來區別很小,都是乙個可排程單元,都擁有記憶體管理結構等等。但是關鍵的差別是程序的資源都是私有的,而執行緒則是和別人共享的,所以執行緒的上下文切換可能比程序的開銷要小很...
多程序,多執行緒
多工程式設計 通過應用程式利用多個計算機核心達到多工同時執行的 目的,從此來提公升程式執行效率 多程序,多執行緒 程序 程式在計算機中一次執行的過程 程式 靜態的描述,不占有計算機資源 程序 是乙個動態的過程,占有cpu,記憶體等計算機資源 有一定的生命週期 同乙個程式,每次執行都是不同的程序,因為...
多執行緒 多程序
是什麼?能幹什麼?單執行緒情況下,執行效率低。系統的資源沒有得到充分利用。計算密集型 運算量比較大 io密集型 cpu空閒,輸入輸出較多 怎麼幹?爬蟲 io密集型 多執行緒 橫向 所有的程式的執行都在乙個執行緒中,程式啟動時,啟動多執行緒,每個執行緒跑同樣的 縱向 將程式進行拆分,每個執行緒跑特定的...