python3多程序阻塞與非阻塞快速理解

2021-10-04 14:28:53 字數 1568 閱讀 4526

非阻塞:(不需要等待)。

簡單來說就是開啟幾個程序就同時執行幾個程序。

比如下面程式,開啟3個程序,那麼程式一執行的時候立馬執行3個程序同時呼叫function方法,不需要等待程序1執行完在執行程序2。

from multiprocessing import lock, pool

import time

def function(index):

print('start process: ', index)

time.sleep(2)

print('end process', index)

if __name__ == '__main__':

pool = pool(processes=3)

for i in range(4):

print("started processes")

pool.close() #需要關閉程序池,防止池其他任務的提交,注意!這裡不是關閉程序。簡單來說就是關掉了屋外的大門,但是各個房間在執行。

pool.join() #等待程序池裡面的程序執行完

print("subprocess done.")

阻塞:(需要等待)。

簡單來說就是需要等待程序1結束之後才能執行程序2。

就算同時開啟3個程序,那麼也得等待乙個程序結束後才能執行下乙個。

from multiprocessing import lock, pool

import time

def function(index):

print('start process: ', index)

time.sleep(2)

print('end process', index)

if __name__ == '__main__':

pool = pool(processes=3)

for i in range(4):

print("started processes")

pool.close()

pool.join()

print("subprocess done.")

非阻塞優缺點優點:快速執行,不受限制。追求程式執行時速度快,對結果返回的快慢不影響的可以使用這種

缺點:輸出的結果可能雜亂,但子程序一定是執行完後才執行父程序,join()方法

下面是執行結果:

阻塞的優缺點:

優點:輸出結果順序合理,相當於加上了鎖和釋放鎖。對輸出結果比較看重的可以使用阻塞。

下面是執行結果

php 多程序程式設計父程序的阻塞與非阻塞例項分析

php中程序的阻塞,主要是父程序等待子程序退出。1.php 如下 define fork nums 5 用於儲存程序pid pids array 我們建立5個子程序 for i 0 i fork nums i else if pids i r n 我們讓子程序等待3秒,再退出 sleep 3 exi...

Python3之多程序join daemon

import os import time from multiprocessing import process,joinablequeue defproducer0 q for i in range 5 print s 生產了 s os.getpid i q.put i q.join defpr...

nginx 非同步非阻塞多程序模型

master程序負責 呼叫各module的初始化函式,讀取解析nginx配置檔案,模組module 解析執行 nginx.conf 配置檔案流程分析 充當整個程序組與使用者的互動介面,接收使用者操作訊號管理worker程序,nginx核心程序模型 worker程序負責 搶占程序鎖,從監聽套接字中獲取...