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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python(33)多进程和多线程的区别

發布時間:2025/3/8 python 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python(33)多进程和多线程的区别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

多線程可以共享全局變量,多進程不能。多線程中,所有子線程的進程號相同;多進程中,不同的子進程進程號不同。

#!/usr/bin/python # -*- coding:utf-8 -*- import os import threading import multiprocessing count_thread = 0 count_process = 0# worker function def worker1(sign, lock):global count_threadlock.acquire()count_thread += 1print(sign, os.getpid())lock.release()def worker2(sign, lock):global count_processlock.acquire()count_process += 1print(sign, os.getpid())lock.release() # Main print('Main:',os.getpid())# Multi-thread record = [] lock = threading.Lock() for i in range(5):thread = threading.Thread(target=worker1,args=('thread',lock))thread.start()record.append(thread)for thread in record:thread.join()# Multi-process record = [] lock = multiprocessing.Lock() for i in range(5):process = multiprocessing.Process(target=worker2,args=('process',lock))process.start()record.append(process)for process in record:process.join()print count_thread print count_process

?

運行結果

('Main:', 3142)
('thread', 3142)
('thread', 3142)
('thread', 3142)
('thread', 3142)
('thread', 3142)
('process', 3148)
('process', 3149)
('process', 3150)
('process', 3151)
('process', 3152)
5
0

應該盡量避免多進程共享資源。多進程共享資源必然會帶來進程間相互競爭。而這種競爭又會造成race condition,我們的結果有可能被競爭的不確定性所影響。但如果需要,我們依然可以通過共享內存和Manager對象這么做。

1) 共享內存

用Python實現的例子:

import multiprocessingdef f(n, a):n.value = 3.14a[0] = 5num = multiprocessing.Value('d', 0.0) arr = multiprocessing.Array('i', range(10))p = multiprocessing.Process(target=f, args=(num, arr)) p.start() p.join()print num.value print arr[:]

?

這里我們實際上只有主進程和Process對象代表的進程。我們在主進程的內存空間中創建共享的內存,也就是Value和Array兩個對象。對象Value被設置成為雙精度數(d), 并初始化為0.0。而Array則類似于C中的數組,有固定的類型(i, 也就是整數)。在Process進程中,我們修改了Value和Array對象。回到主程序,打印出結果,主程序也看到了兩個對象的改變,說明資源確實在兩個進程之間共享。

2)Manager

Manager對象類似于服務器與客戶之間的通信 (server-client),與我們在Internet上的活動很類似。我們用一個進程作為服務器,建立Manager來真正存放資源。其它的進程可以通過參數傳遞或者根據地址來訪問Manager,建立連接后,操作服務器上的資源。在防火墻允許的情況下,我們完全可以將Manager運用于多計算機,從而模仿了一個真實的網絡情境。下面的例子中,我們對Manager的使用類似于shared memory,但可以共享更豐富的對象類型。

import multiprocessingdef f(x, arr, l):x.value = 3.14arr[0] = 5l.append('Hello')server = multiprocessing.Manager() x = server.Value('d', 0.0) arr = server.Array('i', range(10)) l = server.list()proc = multiprocessing.Process(target=f, args=(x, arr, l)) proc.start() proc.join()print(x.value) print(arr) print(l)

?

Manager利用list()方法提供了表的共享方式。實際上你可以利用dict()來共享詞典,Lock()來共享threading.Lock(注意,我們共享的是threading.Lock,而不是進程的mutiprocessing.Lock。后者本身已經實現了進程共享)等。 這樣Manager就允許我們共享更多樣的對象。

參考資料:

http://blog.csdn.net/zhaozhi406/article/details/8137670

http://www.xuebuyuan.com/1968817.html

轉載于:https://www.cnblogs.com/lovychen/p/6478161.html

總結

以上是生活随笔為你收集整理的python(33)多进程和多线程的区别的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 美女裸体跪姿扒开屁股无内裤 | 在线观看黄色免费网站 | 青草青在线 | 久久99婷婷| 国产欧美自拍 | 边吃奶边添下面好爽 | 欧美a在线观看 | 中文字幕欲求不满 | 九九自拍偷拍 | 日本成人久久 | 成人免费一区二区三区在线观看 | 欧美成人精品欧美一级乱黄 | 波多野结衣在线电影 | 变态另类一区 | 亚洲aa在线 | 婷婷视频一区二区三区 | 欧美激情精品久久久久久 | 中文视频一区 | 日本视频在线观看 | 日韩激情电影在线 | 日本中文字幕一区 | 超污巨黄的小短文 | 亚洲精品视频在线免费 | 日本免费三区 | 午夜在线播放 | 久草资源在线播放 | 四虎影院在线免费播放 | 香蕉久久av| 日韩在线影院 | 日日摸夜夜添夜夜添高潮喷水 | 欧美1区| 国产一区二区不卡 | 国产精品av免费观看 | av大帝在线 | 欧美熟妇交换久久久久久分类 | 欧美视频三区 | 午夜老湿机 | 一级特级毛片 | 免费69视频| 进去里片欧美 | 欧美aaa在线观看 | 快色av | 日韩美女啪啪 | 亚洲一级网 | 福利所导航 | 国产精品免费看久久久无码 | 亚洲dvd| 国产福利小视频在线 | 美女100%露胸无遮挡 | 中文日韩在线观看 | av播放在线 | 久久综合狠狠 | 视频一区 中文字幕 | 丰满人妻一区二区三区无码av | 亚洲综合99 | 91精品国产综合久久精品图片 | 成人1区2区 | 国产三级国产精品国产专区50 | www国产一区| 亚洲精品日日夜夜 | 日韩中文字幕av在线 | 国产精品无码中文字幕 | 色综合网址 | 一起射导航 | 中国黄色一级片 | 日本阿v视频 | sm乳奴虐乳调教bdsm | 欧美少妇xxxxx | 国产aⅴ片 | 黄色中文字幕 | 中国少妇高潮 | 色综合av在线 | 亚洲第一看片 | 婷婷综合精品 | 特黄特色特刺激免费播放 | 亚洲精品久久久久久久久久 | 99色播| 嫩草视频在线观看免费 | av成人在线看 | 欧美精品自拍 | 91国产在线免费观看 | 97超视频在线观看 | 国产高清日韩 | 久久成人人人人精品欧 | 波多野结衣办公室双飞 | 中文字幕第六页 | 最新地址在线观看 | 国产美女视频91 | 蜜桃导航-精品导航 | 欧美视频区| 国产一区99 | 九九综合九九综合 | 亚洲色图2| 久久爱伊人 | 69色堂 | 一区二区三区四区五区视频 | 色久av | 最新不卡av | 搞逼综合网 |