Python 34(进程重点)
生活随笔
收集整理的這篇文章主要介紹了
Python 34(进程重点)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
一:開啟進(jìn)程的兩種方式(*****)
?
#開啟進(jìn)程的方式一: from multiprocessing import Process import timedef task(name):print('%s is running' % name)time.sleep(3)print('%s is done' % name)# 在window系統(tǒng)上,開啟子進(jìn)程的操作必須放到if __name__ == '__main__'的子代碼中 if __name__ == '__main__':p = Process(target=task, args=('nuanxin',)) # Process(target=task,kwargs={'name':'nuanxin'})p.start() # 只是向操作系統(tǒng)發(fā)送了一個開啟子進(jìn)程的信號print('混世魔王')?
終端打印:
主
子進(jìn)程? is? running
子進(jìn)程? is? done
Process finished with exit code 0
?
?
?
# 開啟進(jìn)程的方式二: from multiprocessing import Process import timeclass Myprocess(Process):def __init__(self, name):super().__init__()self.name = namedef run(self):print('%s is runing' % self.name)time.sleep(3)print('%s is done' % self.name)# windows系統(tǒng)上,開啟子進(jìn)程的操作系統(tǒng)必須放到if __name__ == '__main__'的子代碼中 if __name__ == '__main__':p = Myprocess('nuanxin')p.start() # 只是向操作系統(tǒng)發(fā)送了一個開啟進(jìn)程的信號print('混世魔王')?
終端打印:
子進(jìn)程? is? running
子進(jìn)程? is? done
主
Process finished with exit code 0
?
?
二:進(jìn)程對象的join方法(*****)
?
# join:讓主進(jìn)程在原地等待,等待進(jìn)程運行完畢,不會影響進(jìn)程的執(zhí)行 from multiprocessing import Process import timedef task(name, n):print('%s is running' % name)time.sleep(3)print('%s is done' % name)if __name__ == '__main__':p1 = Process(target=task, args=('子1', 1))p2 = Process(target=task, args=('子2', 2))p3 = Process(target=task, args=('子3', 3))start = time.time()p1.start()p2.start()p3.start()time.sleep(5)p3.join() # 3 p1.join()p2.join()print('混世魔王', (time.time() - start)) # 5.027485609054565 5.029683589935303 5.025939464569092 start = time.time()p_l = []for i in range(1, 4):p = Process(target=task, args=('子%s' % i, i))p_l.append(p)p.start()for p in p_l:p.join()print('混世魔王', (time.time() - start))終端打印:
子進(jìn)程? is? running
子進(jìn)程? is? running
子進(jìn)程? is? running
子進(jìn)程? is? done
子進(jìn)程? is? done
子進(jìn)程? is? done
Process finished with exit code 0
?
?
?
三:進(jìn)程對象之間內(nèi)存空間隔離(*****)
進(jìn)程和進(jìn)程之間的空間不會互相干擾,沒辦法直接獲取另一個進(jìn)程空間里的數(shù)據(jù),要獲取只有一種辦法,就是寫到文件里面再獲取
from multiprocessing import Processn=100 def task():global nn=0if __name__ == '__main__':p=Process(target=task)p.start()p.join()print(n) View Code?
轉(zhuǎn)載于:https://www.cnblogs.com/zedong/p/9594095.html
總結(jié)
以上是生活随笔為你收集整理的Python 34(进程重点)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Mybatis Plugin(拦截器)的
- 下一篇: Head First Python-Py