多執行緒 多程序

2022-09-03 00:39:19 字數 3519 閱讀 4667

課堂案例一、

強大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密集型 多執行緒 橫向 所有的程式的執行都在乙個執行緒中,程式啟動時,啟動多執行緒,每個執行緒跑同樣的 縱向 將程式進行拆分,每個執行緒跑特定的...