日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

谈谈对线程与进程的理解

發(fā)布時(shí)間:2025/4/14 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 谈谈对线程与进程的理解 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

概念:

線程

線程(threading)是操作系統(tǒng)能夠進(jìn)行運(yùn)算調(diào)度的最小單位。它被包含在進(jìn)程之中,是進(jìn)程中的實(shí)際運(yùn)作單位。一條線程指的是進(jìn)程中一個(gè)單一順序的控制流,一個(gè)進(jìn)程中可以并發(fā)多個(gè)線程,每條線程并行執(zhí)行不同的任務(wù)。

進(jìn)程

進(jìn)程(Process)是計(jì)算機(jī)中的程序關(guān)于某數(shù)據(jù)集合上的一次運(yùn)行活動(dòng),是系統(tǒng)進(jìn)行資源分配和調(diào)度的基本單位,是操作系統(tǒng)結(jié)構(gòu)的基礎(chǔ)。在早期面向進(jìn)程設(shè)計(jì)的計(jì)算機(jī)結(jié)構(gòu)中,進(jìn)程是程序的基本執(zhí)行實(shí)體;在當(dāng)代面向線程設(shè)計(jì)的計(jì)算機(jī)結(jié)構(gòu)中,進(jìn)程是線程的容器。程序是指令、數(shù)據(jù)及其組織形式的描述,進(jìn)程是程序的實(shí)體。

進(jìn)程與線程區(qū)別

a.地址空間和其它資源:進(jìn)程間相互獨(dú)立,同一進(jìn)程的各線程間共享。某進(jìn)程內(nèi)的線程在其它進(jìn)程不可見。

b.通信:進(jìn)程間通信IPC,線程間可以直接讀寫進(jìn)程數(shù)據(jù)段(如全局變量)來進(jìn)行通信——需要進(jìn)程同步和互斥手段的輔助,以保證數(shù)據(jù)的一致性。

c.調(diào)度和切換:線程上下文切換比進(jìn)程上下文切換要快得多。

d.在多線程OS中,進(jìn)程不是一個(gè)可執(zhí)行的實(shí)體。

?

threading模塊

直接調(diào)用

1 import threading 2 import time 3 4 def tell(num): #定義每個(gè)線程要運(yùn)行的函數(shù) 5 6 print(num) 7 time.sleep(3) 8 9 if __name__ == '__main__': 10 t1 = threading.Thread(target=tell,args=(1,)) #生成一個(gè)線程實(shí)例 11 t2 = threading.Thread(target=tell,args=(2,)) #生成另一個(gè)線程實(shí)例 12 t1.start() #啟動(dòng)線程 13 t2.start() #啟動(dòng)另一個(gè)線程 14 print(t1.getName()) #獲取線程名 15 print(t2.getName()) View Code

繼承調(diào)用

1 __author__ = 'thinkpad' 2 # !/usr/bin/env python 3 #-*- coding:utf-8 -*- 4 5 import threading 6 import time 7 8 class MyThread(threading.Thread): 9 10 def __init__(self,num): 11 threading.Thread.__init__(self) 12 self.num = num 13 def run(self):#定義每個(gè)線程要運(yùn)行的函數(shù) 14 print(self.num) 15 time.sleep(3) 16 17 if __name__ == '__main__': 18 t1 = MyThread(1) 19 t2 = MyThread(2) 20 t1.start() 21 t2.start() 22 print(t1.getName()) 23 print(t2.getName()) View Code

?互拆鎖

1 __author__ = 'thinkpad' 2 # !/usr/bin/env python 3 #-*- coding:utf-8 -*- 4 import threading 5 import time 6 7 def addNum(): 8 global num #在每個(gè)線程中都獲取這個(gè)全局變量 9 print('--get num:',num ) 10 time.sleep(1) 11 lock.acquire() #修改數(shù)據(jù)前加鎖 12 num -=1 #對(duì)此公共變量進(jìn)行-1操作 13 lock.release() #修改后釋放 14 num = 100 #設(shè)定一個(gè)共享變量 15 thread_list = [] 16 17 lock = threading.Lock() #生成全局鎖 18 for i in range(100): 19 t = threading.Thread(target=addNum) 20 t.start() 21 thread_list.append(t) 22 23 for t in thread_list: #等待所有線程執(zhí)行完畢 24 t.join() 25 print('final num:', num ) View Code

?

多進(jìn)程Mutiprocessing

1 from multiprocessing import Process 2 import time 3 def f(name): 4 time.sleep(2) 5 print('hello', name) 6 7 if __name__ == '__main__': 8 for i in range(4): 9 p = Process(target=f, args=('bob',)) 10 p.start() 11 p.join() View Code 1 from multiprocessing import Process 2 import os 3 4 def info(title): 5 print(title) 6 print('module name:', __name__) 7 print('parent process:', os.getppid()) 8 print('process id:', os.getpid()) 9 print("\n\n") 10 11 def f(name): 12 info('\033[31;1mfunction f\033[0m') 13 print('hello', name) 14 15 if __name__ == '__main__': 16 info('\033[32;1mmain process line\033[0m') 17 p = Process(target=f, args=('bob',)) 18 p.start() 19 p.join() View Code

?

?進(jìn)程間通訊

queues

1 from multiprocessing import Process, Queue 2 3 def f(q): 4 q.put([42, None, 'hello']) 5 6 if __name__ == '__main__': 7 q = Queue() 8 p = Process(target=f, args=(q,)) 9 p.start() 10 print(q.get()) # prints "[42, None, 'hello']" 11 p.join() View Code

Pipes

1 from multiprocessing import Process, Pipe 2 3 def f(conn): 4 conn.send([42, None, 'hello']) 5 conn.close() 6 7 if __name__ == '__main__': 8 parent_conn, child_conn = Pipe() 9 p = Process(target=f, args=(child_conn,)) 10 p.start() 11 print(parent_conn.recv()) # prints "[42, None, 'hello']" 12 p.join() View Code

Mangager

1 from multiprocessing import Process, Manager 2 3 def f(d, l): 4 d[1] = '1' 5 d[2] = '2' 6 d[0.25] = None 7 l.append(1) 8 print(l) 9 10 if __name__ == '__main__': 11 with Manager() as manager: 12 d = manager.dict() 13 14 l = manager.list(range(5)) 15 p_list = [] 16 for i in range(10): 17 p = Process(target=f, args=(d, l)) 18 p.start() 19 p_list.append(p) 20 for res in p_list: 21 res.join() 22 23 print(d) 24 print(l) View Code

進(jìn)程同步

1 from multiprocessing import Process, Lock 2 3 def f(l, i): 4 l.acquire() 5 try: 6 print('hello world', i) 7 finally: 8 l.release() 9 10 if __name__ == '__main__': 11 lock = Lock() 12 13 for num in range(10): 14 Process(target=f, args=(lock, num)).start() View Code

進(jìn)程池

1 from multiprocessing import Process,Pool 2 import time 3 4 def Foo(i): 5 time.sleep(2) 6 return i+100 7 8 def Bar(arg): 9 print('-->exec done:',arg) 10 11 pool = Pool(5) 12 13 for i in range(10): 14 pool.apply_async(func=Foo, args=(i,),callback=Bar) 15 #pool.apply(func=Foo, args=(i,)) 16 17 print('end') 18 pool.close() 19 pool.join()#進(jìn)程池中進(jìn)程執(zhí)行完畢后再關(guān)閉,如果注釋,那么程序直接關(guān)閉。 View Code

?

?

?

?

轉(zhuǎn)載于:https://www.cnblogs.com/lizheng19822003/p/5295471.html

總結(jié)

以上是生活随笔為你收集整理的谈谈对线程与进程的理解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲精品乱码久久久久久蜜桃欧美 | 制服师生在线 | 欧美精品一卡二卡 | 26uuu国产| aaaaa一级片| 亚洲特黄视频 | 欧美变态另类刺激 | 被黑人各种姿势猛c哭h文1 | 欧美精品一区视频 | 成年人免费毛片 | 少妇久久精品 | 好吊操视频这里只有精品 | 国产精品无码专区 | 99色播| 国产精品亚州 | 97久久精品 | 国内黄色一级片 | 免费看h网站 | 性高潮影院 | 黄色免费大片 | 亚洲AV无码国产精品午夜字幕 | www.激情| 爱爱15p| 欧美日韩国产中文 | 青青在线观看视频 | 激情小视频 | 精品人妻一区二区三区日产乱码 | 欧美夜夜爽 | 久久国产一 | 国产一区二区免费电影 | 亚洲美女精品视频 | 日本做爰三级床戏 | 美女隐私无遮挡网站 | 中文字幕无线精品亚洲乱码一区 | 少妇搡bbbb搡bbb搡小说 | 午夜精品久久久久久久99老熟妇 | av爱爱爱| 男人草女人 | av免费黄色 | 一本加勒比波多野结衣 | 中文字幕在线观看你懂的 | 亚洲精品a级 | 国产啊啊啊啊 | 在线伊人| 波多野结衣亚洲天堂 | 裸体裸乳被免费看视频 | 2019av视频 | 尤物精品视频在线观看 | 日本免费黄色大片 | 一级黄色在线观看 | 午夜亚洲福利 | 日韩不卡免费视频 | 久草a视频 | 少妇av片 | 国产精品一区二区三区在线播放 | 日本男女啪啪 | 久久精品国产亚洲av麻豆蜜芽 | 好吊色欧美一区二区三区视频 | 国产美女被遭强高潮免费网站 | 久久这里精品 | 日本大尺度做爰呻吟舌吻 | 麻豆91精品| 欧美成人r级一区二区三区 中文无码一区二区三区在线观看 | 伊人色婷婷 | 国产精品久久久久久久免费大片 | 91caob| 热久久这里只有精品 | 视频在线观看一区 | 亚洲成人av免费在线观看 | 久久精品欧美一区二区三区麻豆 | 亚洲三级理论 | 老熟妇午夜毛片一区二区三区 | re久久| 婷久久 | 色多多视频在线观看 | 韩国av一区二区 | 少妇2做爰bd在线意大利堕落 | 欧美男人天堂 | 欧美久久久久久又粗又大 | av动漫在线免费观看 | 精品中文字幕一区 | 狠狠干伊人网 | 国产一二在线 | 伊人久久天堂 | 亚洲精品免费播放 | 日本一区二区免费看 | 国产成人精品亚洲线观看 | 欧美精品片 | 日韩精品成人免费观看视频 | 打屁股无遮挡网站 | 性欧美激情 | av先锋资源 | 人人舔人人插 | 亚洲国产精一区二区三区性色 | 国产精品50页 | 欧美成人一区二区三区片免费 | 欧美激情一区二区视频 | 中文乱码人妻一区二区三区视频 | 黄频在线 |