多程序 如何使用多程序處理多個任務

2021-09-13 03:36:34 字數 2524 閱讀 9037

以下**用以建立兩個子程序處理任務,通過基本的**框架講解如何使用fork建立很明確的子程序處理任務。

int groupcount = 2;

char *ptaskgroup[2];

pid_t pid = -1;

for (int i = 0; i < groupcount; ++i)

else // parent process

}}

} if (pid == -1)

else if (pid == 0) // 子程序

else // 父程序

// visionloop();

}

[lv:2]: pid --------------11 [12234]  <2019-03-21_17:34:20><../src/main.c:143>

[lv:2]: pid --------------22 [12234] <2019-03-21_17:34:20><../src/main.c:157>

[lv:2]: pid --------------11 [0] <2019-03-21_17:34:20><../src/main.c:143>

[lv:2]: this is children pid 1 [12234], ... <2019-03-21_17:34:20><../src/main.c:146>

[lv:2]: this is children pid 2 [12234], ... <2019-03-21_17:34:20><../src/main.c:172>

[lv:2]: pid --------------11 [12235] <2019-03-21_17:34:20><../src/main.c:143>

[lv:2]: pid --------------22 [12235] <2019-03-21_17:34:20><../src/main.c:157>

[lv:2]: pid [0]-------------- [12234] <2019-03-21_17:34:20><../src/main.c:183>

[lv:2]: pid --------------11 [0] <2019-03-21_17:34:20><../src/main.c:143>

[lv:2]: pid [1]-------------- [12235] <2019-03-21_17:34:20><../src/main.c:183>

[lv:2]: this is children pid 1 [12235], ... <2019-03-21_17:34:20><../src/main.c:146>

[lv:2]: this is children pid 2 [12235], ... <2019-03-21_17:34:20><../src/main.c:172>

在執行pid = fork();之後子程序已經被建立,此時子程序賦值主程序的所有資料,父程序和子程序同時繼續向後執行。通過執行的日誌資訊可以知道,父程序先執行

// 父程序順序執行列印了變數pid儲存的子程序的id號,同時執行屬於父程序的 else部分**,以下第二行列印。

[lv:2]: pid --------------11 [12234] <2019-03-21_17:34:20><../src/main.c:143>

[lv:2]: pid --------------22 [12234] <2019-03-21_17:34:20><../src/main.c:157>

隨後子程序也開始執行

[lv:2]: pid --------------11 [0]  <2019-03-21_17:34:20><../src/main.c:143>

[lv:2]: this is children pid 1 [12234], ... <2019-03-21_17:34:20><../src/main.c:146>

[lv:2]: this is children pid 2 [12234], ... <2019-03-21_17:34:20><../src/main.c:172>

因為建立程序fork()在 for迴圈中,那麼當建立子程序完成之後 ,如果不退出當前迴圈,子程序也會執行for迴圈,那樣的話,子程序又會建立子程序,這樣就不符合我們一開始建立2個子程序的初衷。所以才有以下**。

if (pid == 0 || pid == -1)

隨後建立第二個子程序,順序和方法同第乙個。

主程序在迴圈中建立子程序完成之後,退出迴圈,然後在主程序中列印建立的子程序的pid.

[lv:2]: pid [0]-------------- [12234]  <2019-03-21_17:34:20><../src/main.c:183>

[lv:2]: pid [1]-------------- [12235] <2019-03-21_17:34:20><../src/main.c:183>

多程序 多程序queue

多程序 import multiprocessing import threading import time defthread run print threading.get ident defrun name time.sleep 2 print hello name t threading....

如何使用多程序python

如何使用多程序 由於python中全域性解釋鎖 gil 的存在,在任意時刻只允許乙個執行緒在直譯器中執行,因此python的多執行緒不適合處理cpu密集型任務,想要處理cpu密集型任務,可以使用多程序模型 解決方案 使用標準庫中multiprocessing.process,它可以啟動子程序執行任務...

python多程序 python多程序

當有多個非相關任務需要處理時,並行能大大提高處理速度。這裡簡要介紹python的multiprocessing模組。簡單多程序編寫 當我們任務數量確定而且比較少的時候,可以手動為每個任務指定乙個程序來執行。import multiprocessing as mp def f a print a if...