學習筆記(24):Python網絡編程并發編程-進程與線程的區別

立即學習:https://edu.csdn.net/course/play/24458/296438?utm_source=blogtoedu

線程與進程的區別:

?

1.消耗區別:進程>線程

1)進程運行結果

#進程運行
from multiprocessing import Process
def task(name):print("我是%s"%name)if __name__ == '__main__':p1 = Process(target=task,args=('子進程',))p1.start()print('主進程')

進程運行結果:

?2)線程運行結果

from threading import Thread
def task(name):print("我是%s"%name)if __name__ == '__main__':p1 = Thread(target=task,args=('子線程',))p1.start()print('主線程')

線程運行結果:

3)分析:在兩端代碼中,除了模塊的不一樣,代碼的順序都是一樣的,但是運行的結果的順序是不一樣的。進程運行中是主進程先打印再打印的子進程,這是因為新建一個進程需要申請內存空間時間較長,而線程恰恰相反。所以進程消耗大于線程。注:同一進程里面的線程是平級的,沒有父線程子線程的說法,為了方便理解才說的

?

2.地址共享問題:進程之間不共享,同一進程線程之間共享

1)線程之間

from threading import Thread
n = 100
def task(name):
#聲明全局變量,并且修改了n的值global nn = 0print("我是%s"%name)if __name__ == '__main__':#開啟了一個新的線程,會改變n的值t1 = Thread(target=task,args=('子線程',))t1.start()print('主線程','n=%s'%n)#由于主線程和子線程之間是共享地址空間的即數據,所以線程n的改變也會共享到主線程中
#在主進程下運行了一個主線程和一個子線程(新建的線程)

線程運行結果:

?

2)進程運行

from multiprocessing import Process
n = 100
def task(name):global nn = 0print("我是%s"%name)if __name__ == '__main__':#開啟了一個新的進程p1 = Process(target=task,args=('子進程',))p1.start()print('主進程','n=%s'%n)
#在新的進程中,n的值已經被改變成了0,在主進程中進行n的值的打印,得到的是全局變量n=100,說明進程之間的數據是不共享的,其值的改變包含影響到其他進程值

進程運行結果:

?

3.pid

查看當前進程pid的方法:

1)multiprocessing.current_process().pid

2)os.getpid()

查看當前進程ppid()的方法:父進程pid

os.getppid()

?

不同進程pid

from multiprocessing import Process,current_process
n = 100
def task(name):global nn = 0print("我是%s"%name,current_process().pid)if __name__ == '__main__':#開啟了一個新的線程p1 = Process(target=task,args=('子進程',))p1.start()print('主進程','n=%s'%n,current_process().pid)

子進程的pid與父進程pid不同

?

?不同線程pid

from threading import Thread
import os
n = 100
def task(name):global nn = 0print("我是%s"%name,os.getpid())if __name__ == '__main__':#開啟了一個新的線程t1 = Thread(target=task,args=('子線程',))t1.start()print('主線程','n=%s'%n,os.getpid())
#在主進程下運行了一個主線程和一個子線程(新建的線程)

不同線程pid一樣

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/256986.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/256986.shtml
英文地址,請注明出處:http://en.pswp.cn/news/256986.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Codeforces Beta Round #1

A /*************************************************************************> File Name: A.cpp> Author: opas_chenxin> Mail: 1017370773qq.com > Created Time: 2016年05月06日 星期五 02時22分23秒 ************************************************…

windows系統中創建線程常用哪幾個函數,有什么區別?

windows系統中創建線程常用哪幾個函數? 在windows系統中創建線程的函數有: CreadThread,AfxBeginThread,_beginthread,_beginthreadex。 他們的區別在于使用的場景不同。 CreateThread是Windows的API函數(SDK函數的標…

java.lang.String小測試

還記得java.lang.String么,如果現在給你一個小程序,你能說出它的結果么 1 public static String ab(String a){2 return a "b";3 }4 5 public static void testAb(){6 String x "a";7 ab…

Oracle傳輸表空間

一、簡介 可傳輸表空間(還有個集)最大的優勢是其速度比export/import或unload/load要快的多。因為可傳輸表空間主要是復制數據文件到目標路徑,然后再使用export/import或Data Pump export/import等應用僅導出/導入表空間對象的元數據到新數據庫。 (1&…

進程控制塊PCB結構體 task_struct 描述

進程控制塊,英文名(Processing Control Block),簡稱 PCB 。 進程控制塊是系統為了管理進程設置的一個專門的數據結構,主要表示進程狀態。 每一個進程都對應一個PCB來維護進程相關的信息; 在Linux中&#xf…

基于OpenCV與tensorflow實現實時手勢識別

基于OpenCV與tensorflow object detection API使用遷移學習,基于SSD模型訓練實現手勢識別完整流程,涉及到數據集收集與標注、VOC2012數據集制作,tfrecord數據生成、SSD遷移學習與模型導出,OpenCV攝像頭實時視頻流讀取與檢測處理&a…

學習筆記(25):Python網絡編程并發編程-Thread其他屬性和守護線程

立即學習:https://edu.csdn.net/course/play/24458/296440?utm_sourceblogtoedu 1.Thread其他的屬性 CurrentThread().getName():獲得當前線程的名字 t.is_Alive:判斷線程是否還在運行 t.join():等待線程運行結束再執行join后面的代碼 t.setName("name"):為線程…

AIX主機信任關系配置

1.配置主機信任關系的時候,需要先在兩臺主機/etc/hosts文件中添加要信任主機的IP,假設有(192.168.8.190 aix190,192.168.8.191 aix191)2個主機,在191主機配置如下所示 192.168.8.190 aix190 2.如果系統配置DNS,則需要去…

Sprint2團隊貢獻分

團隊貢獻分: 郭志豪:31% http://www.cnblogs.com/gzh13692021053/ 楊子健:22%http://www.cnblogs.com/yzj666/ 譚宇森:23%http://www.cnblogs.com/yzj666/ 劉森松:24% http://www.cnblogs.com/lssh/轉載于:https://w…

學習筆記(26):Python網絡編程并發編程-GIL與自定義互斥鎖的區別

立即學習:https://edu.csdn.net/course/play/24458/296443?utm_sourceblogtoedu 1.GIL的基本概念 答:GIL本質上就是一把鎖,只是他是一把在python解釋器上的鎖 2.GIL與互斥鎖的區別 答: 1)GIL保護的是在python解釋器上的參數&a…

多目標跟蹤檢測

方法: 1、實時性,每幀視頻10ms 2、方法,首先深度學習檢測到目標,然后再寫跟蹤算法

2014年最具人氣國外WORDPRESS主題

在國外,WrodPress這個博客系統極為受歡迎,使用WordPress來建站可以降低很多成本,另外還能以十分便宜的價格獲得一個漂亮的WP網站模板。 今天向大家分享來自Themeforest 2014年最具人氣的高級WrodPress主題,這些主題無論是設計還是…

軟件工程學習感想

通過這半學期我對軟件工程的學習,從軟件工程的基礎到考試用戶的需求分析與求解,最后到黑盒白盒測試通過自身做過的一些案例,講解了軟件工程這門本身枯燥乏味的課程,這不僅增強了學生學習的積極性,也通過讓我們自己去做…

開源視覺salm算法介紹

當前的開源SLAM方案 開源方案傳感器形式地址鏈接MonoSLAM單目https://github.com/hanmekim/SceneLib2 PTAM單目 http://www.robots.ox.ac.uk/~gk/PTAM/ORB-SLAM 單目為主http://webdiis.unizar.es/~raulmur/orbslam/ORB-SLAM2單目https://github.com/raulmur/ORB_SLAM2LSD-SLAM…

學習筆記(27):Python網絡編程并發編程-GIL與多線程

立即學習:https://edu.csdn.net/course/play/24458/296444?utm_sourceblogtoedu GIL與多線程 1.須知: 1)cpu主要是為了提升計算性能,增加CPU提升計算性能; 2)每一個CPU一旦遇到阻塞狀態都會處于等待狀態&#xff0c…

J0ker的CISSP之路:復習-Access Control(3)

本文同時發表在:[url]http://netsecurity.51cto.com/art/200801/63649.htm[/url] 在《J0ker的CISSP之路》系列的上一篇文章里,J0ker給大家介紹了訪問控制CBK里面一些常見的破壞信息資產保密性的威脅類型,那么什么類型的威脅會破壞信息資產的完…

C#中對泛型List進行分組輸出元素

背景:在輸出列表時,往往需要按照某一字段進行分組,比如在輸出城市列表時,按照首字母進行分組,輸出學生列表時,按照年級進行分組,然后再對分組的結果按照其他的字段進行排序。 如存在以下STU學生…

分頁3

http://www.cnblogs.com/ChrisLee2011/p/4288194.html 頁面的HTML部分如下&#xff1a; < div class "tableContainer"> < input id "currentPage" type "hidden" value " ViewData[ "currentPage"] "/> < i…

最優化課堂筆記01: 第一章 最優化的基本概念

第一章 最優化的基本概念 1.最優化求解的數學模型建立 2.例題&#xff08;考試第一大題&#xff1a;數學模型建立&#xff09; 解析&#xff1a;優化變量、目標函數&#xff08;一般取最小化&#xff09;、約束條件 注意&#xff1a; 1&#xff09;約束條件一般形式為&#…

面向對象中構造函數的小練習

//寫一個Ticket類&#xff0c;有一個距離屬性&#xff08;本屬性只讀&#xff0c;在構造方法中賦值&#xff09;&#xff0c;不能為負數//有一個價格屬性&#xff0c;價格屬性為只讀&#xff0c;并且根據距離distance計算價格Price(1元/公里)//0--100公里 票價不打折//101-20…