python start方法_进程方法 run和start的区别
start() 方法來啟動進程,真正實現了多進程運行,這時無需等待 run 方法體代碼執行完畢而直接繼續執行下面的代碼:調用 Process 類的 start() 方法來啟動一個進程,這時此進程處于就緒(可運行)狀態,并沒有運行,一旦得到 cpu 時間片,就開始執行 run() 方法,這里方法 run() 稱為進程體,當進程結束后,不可以重新啟動。
run() 方法只是類的一個普通方法,如果直接調用 run 方法,程序中依然只有主線程這一個線程,其程序執行路徑還是只有一條,還是要順序執行,還是要等待 run 方法體執行完畢后才可繼續執行下面的代碼,這樣就沒有達到寫線程的目的。
驗證:
import multiprocessing
import time
def download():
print('開始下載')
for i in range(3):
print('-----1------')
time.sleep(1)
def upload():
print('上傳完畢')
for i in range(3):
print('-----2------')
time.sleep(1)
def main():
#queue = multiprocessing.Queue() #實例化隊列
process1 = multiprocessing.Process(target=upload)
process2 = multiprocessing.Process(target=download)
process1.run()
process2.run()
if __name__ == '__main__':
main()
運行結果:
上傳完畢
-----2------
-----2------
-----2------
開始下載
-----1------
-----1------
-----1------
如果使用start方法:
import multiprocessing
import time
def download():
print('開始下載')
for i in range(3):
print('-----1------')
time.sleep(1)
def upload():
print('上傳完畢')
for i in range(3):
print('-----2------')
time.sleep(1)
def main():
#queue = multiprocessing.Queue() #實例化隊列
process1 = multiprocessing.Process(target=upload)
process2 = multiprocessing.Process(target=download)
# process1.run()
# process2.run()
process1.start()
process2.start()
if __name__ == '__main__':
main()
執行結果:
上傳完畢
-----2------
開始下載
-----1------
-----2------
-----1------
-----2------
-----1------
原文鏈接:https://blog.csdn.net/LCY133/article/details/107173364
總結
以上是生活随笔為你收集整理的python start方法_进程方法 run和start的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Step1我学习ros2的一些经历(从u
- 下一篇: 【电影推荐】风吹麦浪