20 9 22 Python實現多程序多執行緒

2021-10-09 16:58:48 字數 3431 閱讀 4172

對於計算機來說,有兩種實現多工的方式:並行和併發

程式分配資源的最小單位。

[外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳(img-jptdps0k-1600777354149)(

[外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳(img-jxyodjfn-1600777354154)(

import multiprocessing

import time

'''# 建立子程序

sing_process = multiprocess.process(target=sing)

# 啟動子程序

sing_process.start()

'''def dance():

for i in range(3):

print("跳舞")

time.sleep(0.5)

def sing():

for i in range(3):

print("唱歌")

time.sleep(0.5)

if __name__ == "__main__":

print("單程序順序執行")

sing()

dance()

print("多程序")

sing_process = multiprocessing.process(target=sing)

dance_process = multiprocessing.process(target=dance)

sing_process.start()

dance_process.start()

import multiprocessing

import time

'''# 建立子程序 元祖的方式傳遞引數

sing_process = multiprocess.process(target=sing,args=(3,))

# 啟動子程序

sing_process.start()

# 字典的方式傳遞引數

'''def dance(nums,names):

for i in range(nums):

print(names+"跳舞")

time.sleep(0.5)

def sing(nums,names):

for i in range(nums):

print(names+"唱歌")

time.sleep(0.5)

if __name__ == "__main__":

print("多程序")

sing_process = multiprocessing.process(target=sing,args=(5,"小公尺"))

dance_process = multiprocessing.process(target=dance,kwargs=)

sing_process.start()

dance_process.start()

import multiprocessing

import time

import os

'''import os

print("work程序編號",os.getpid())

'''def dance(nums,names):

print("dance程序id:"+str(os.getpid()))

print("dance父程序id:"+str(os.getppid()))

for i in range(nums):

print(names+"跳舞")

time.sleep(0.5)

def sing(nums,names):

print("sing程序id:"+str(os.getpid()))

print("sing程序父id:"+str(os.getppid()))

for i in range(nums):

print(names+"唱歌")

time.sleep(0.5)

if __name__ == "__main__":

print("多程序")

sing_process = multiprocessing.process(target=sing,args=(5,"小公尺"))

dance_process = multiprocessing.process(target=dance,kwargs=)

print("主程序id:"+str(os.getpid()))

sing_process.start()

dance_process.start()

import time

import multiprocessing

def work():

for i in range(10):

print("工作中...")

time.sleep(0.2)

if __name__ == '__main__':

work_process = multiprocessing.process(target=work)

work_process.daemon=true

work_process.start()

# 程式等待1秒

time.sleep(1)

print("程式結束")

[外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳(img-893o4zdj-1600777354156)(

[外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳(img-6xmyrd1b-1600777354158)(

執行緒之間的執行是無順序的,取決於cpu的排程

import time

import threading

def task():

time.sleep(1)

# current_thread 獲取當前的執行緒物件

thread = threading.current_thread

print('n')

print(threading)

if __name__ == "__main__":

for i in range(5):

sub_thread = threading.thread(target=task)

sub_thread.start()

[外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳(img-bxxzrmt1-1600777354160)(

[外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳(img-hjoovsam-1600777354162)(

[外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳(img-m8bwp5dp-1600777354163)(

Python實現多程序

python可以實現多執行緒,但是因為global interpreter lock gil python的多執行緒只能使用乙個cpu核心,即乙個時間只有乙個執行緒在執行,多執行緒只是不同執行緒之間的切換,對多核cpu來說,就是巨大的浪費。如4核cpu,實際上只利用了乙個核,cpu利用率只有25 要...

python 實現多程序

方法一 from urllib import request from multiprocessing import process import os def url,kwargs print 當前程序id os.getpid os.getppid os.getpid 獲取當前程序id,os.ge...

Python多程序 實現多程序的幾種方式

coding utf 8 pid os.fork 1.只用在unix系統中有效,windows系統中無效 2.fork函式呼叫一次,返回兩次 在父程序中返回值為子程序id,在子程序中返回值為0 import os pid os.fork if pid 0 print 執行子程序,子程序pid 父程序...