双方向のpython3プロセスを作成します。1

#のコーディング:UTF-8 
のインポートのOS
 インポートからマルチプロセッシングインポートプロセス


DEFの関数func1():
     印刷" 開始5func1 ... " を印刷" 6プロセスIDのサブプロセス1>:" 、os.getpid())
     を印刷します" 7つの1子プロセスの親プロセスID>:" 、os.getppid())
    time.sleep( 2 印刷" 11func1終了... " 


DEFの関数func2():
     印刷" 開始8func2 ..." を印刷" 9サブプロセス工程数2>:"os.getpid())
     プリント" 10 2子プロセスの親プロセスID>:" 、os.getppid())
    time.sleep( 2 印刷" 12func2終了... " IF __name__ == ' __main__ ' 
    start_time_bin = time.time()
     印刷" 1メインプロセスを開始します。。" を印刷" 2つのメインプロセス番号>:" 、OS。
    GETPID()) 印刷


 " プロセス番号の3つの主要な親(すなわち、プロセスID pycharm)>:" 、os.getppid())
    P1 =プロセス(目標= 関数func1)
    P2 =プロセス(目標= 関数func2)
    p1.start()
    P2 .start()
    印刷" 4は、メイン処理を終了する。" 
    p1.join()
    p2.join()
    end_time_bin = time.time()
     プリント" 並列プログラムの実行時間13(秒)"、end_time_bin - start_time_bin )結果:
 


1マスター・プロセスを開始する。2主要プロセスID>:3620 親プロセスIDの3つの主要なプロセス(すなわちpycharmプロセスID)>:7420 4.メイン処理は終了...スタート5func1 6のサブプロセスのプロセスID> 1:3088 7子プロセスの親プロセスID> 1:3620 起動8func2 ... 9のサブプロセスのプロセスID> 2: 6348 10 2子プロセスの親プロセスID>:3620 11func1終了... 12func2終了... #1 (秒)13の並列プログラムの実行時間:2.375

 

上記のコードを介して、それはプログラムの実行、4つのプロセスの総中見ることができます。

pycharmプロセスID:7420

  メインプロセスID:3620

    子プロセスID:3088

    子プロセスID:6348

並行して、マスターと子プロセス。

 

# coding:utf-8
import os
import time


def func1():
    print("4func1 start...")
    print("5子进程1的进程号>:", os.getpid())
    print("6子进程1的父进程号>:", os.getppid())
    time.sleep(2)
    print("7func1 end...")


def func2():
    print("8func2 start...")
    print("9子进程2的进程号>:", os.getpid())
    print("10子进程2的父进程号>:", os.getppid())
    time.sleep(2)
    print("11func2 end...")

if __name__ == '__main__':
    start_time_chuan = time.time()
    print("1进程开始.")
    print("2进程号>:", os.getpid())
    print("3进程的父进程号(即pycharm的进程号)>:", os.getppid())
    func1()
    func2()
    print("12主进程结束.")
    end_time_chuan = time.time()
    print("13串行程序的执行时间(秒数):", end_time_chuan - start_time_chuan)


执行结果:
# 1进程开始.
# 2进程号>: 4692
# 3进程的父进程号(即pycharm的进程号)>: 7420
# 4func1 start...
# 5子进程1的进程号>: 4692
# 6子进程1的父进程号>: 7420
# 7func1 end...
# 8func2 start...
# 9子进程2的进程号>: 4692
# 10子进程2的父进程号>: 7420
# 11func2 end...
# 12主进程结束.
# 13串行程序的执行时间(秒数): 4.015625

 

通过上面的代码,可以看出程序执行的过程中,一共有2个进程.

pycharm的进程号: 7420

  进程号: 4692

主进程和子进程是串行的.

总结:

  遇到有IO阻塞的情况,并行的执行时间短,串行的执行时间长.

 

接下来咱们看下没有IO(input/output输入输出)阻塞的情况哈.

 

# coding:utf-8
import os
import time
from multiprocessing import Process


def func1():
    print("5func1 start...")
    print("6子进程1的进程号>:", os.getpid())
    print("7子进程1的父进程号>:", os.getppid())
    print("8func1 end...")


def func2():
    print("9func2 start...")
    print("10子进程2的进程号>:", os.getpid())
    print("11子进程2的父进程号>:", os.getppid())
    print("12func2 end...")


if __name__ == '__main__':
    start_time_bin = time.time()
    print("1主进程开始.")
    print("2主进程号>:", os.getpid())
    print("3主进程的父进程号(即pycharm的进程号)>:", os.getppid())
    p1 = Process(target=func1,)
    p2 = Process(target=func2,)
    p1.start()
    p2.start()
    print("4主进程结束.")
    p1.join()
    p2.join()
    end_time_bin = time.time()
    print("13并行程序的执行时间(秒数):", end_time_bin - start_time_bin)


# 1主进程开始.
# 2主进程号>: 7072
# 3主进程的父进程号(即pycharm的进程号)>: 7420
# 4主进程结束.
# 5func1 start...
# 6子进程1的进程号>: 8428
# 7子进程1的父进程号>: 7072
# 8func1 end...
# 9func2 start...
# 10子进程2的进程号>: 8204
# 11子进程2的父进程号>: 7072
# 12func2 end...
# 13并行程序的执行时间(秒数): 0.390625

 

通过上面的代码执行结果可以看到没有IO阻塞并行的情况,程序运行的时间是: 0.390625

 

接下来看下串行没有IO阻塞的运行时间哈

# coding:utf-8
import os
import time


def func1():
    print("4func1 start...")
    print("5子进程1的进程号>:", os.getpid())
    print("6子进程1的父进程号>:", os.getppid())
    print("7func1 end...")


def func2():
    print("8func2 start...")
    print("9子进程2的进程号>:", os.getpid())
    print("10子进程2的父进程号>:", os.getppid())
    print("11func2 end...")

if __name__ == '__main__':
    start_time_chuan = time.time()
    print("1进程开始.")
    print("2进程号>:", os.getpid())
    print("3进程的父进程号(即pycharm的进程号)>:", os.getppid())
    func1()
    func2()
    print("12主进程结束.")
    end_time_chuan = time.time()
    print("13串行程序的执行时间(秒数):", end_time_chuan - start_time_chuan)

# 1进程开始.
# 2进程号>: 10040
# 3进程的父进程号(即pycharm的进程号)>: 7420
# 4func1 start...
# 5子进程1的进程号>: 10040
# 6子进程1的父进程号>: 7420
# 7func1 end...
# 8func2 start...
# 9子进程2的进程号>: 10040
# 10子进程2的父进程号>: 7420
# 11func2 end...
# 12主进程结束.
# 13串行程序的执行时间(秒数): 0.015625

哇呕,是不是发现了什么,没有IO阻塞的情况,串行的运行时间短,并行的运行时间长,因为并行比串行更占系统资源.

 

おすすめ

転載: www.cnblogs.com/lilyxiaoyy/p/10964145.html