python中的多程序

2021-10-09 16:07:03 字數 4041 閱讀 3592

import multiprocessing

import time

deffunc

(arg)

: pname = multiprocessing.current_process(

).name

pid = multiprocessing.current_process(

).pid

print

("當前程序id=%d,name=%s"

%(pid, pname)

)for i in

range(5

):print

(arg)

time.sleep(1)

if __name__ ==

"__main__"

: p = multiprocessing.process(target=func, args=

("hello",)

)# p.daemon = true # 設為【守護程序】(隨主程序的結束而結束)

p.start(

)while

true

:print

("子程序是否活著?"

, p.is_alive())

time.sleep(1)

print

("main over"

)

import multiprocessing

import os

# 通過繼承process實現自定義程序

class

myprocess

(multiprocessing.process)

:def

__init__

(self, name, url)

:super()

.__init__(

) self.name = name

self.url = url # 自定義屬性

# 重寫run

defrun

(self)

: pid = os.getpid(

) ppid = os.getppid(

) pname = multiprocessing.current_process(

).name

print

("當前程序name:"

, pname)

print

("當前程序id:"

, pid)

print

("當前程序的父程序id:"

, ppid)

if __name__ ==

'__main__'

:# 建立3個程序

myprocess(

"小分隊1",""

).start(

) myprocess(

"小分隊2",""

).start(

)print

("主程序id:"

, multiprocessing.current_process(

).pid)

# cpu核數

corecount = multiprocessing.cpu_count(

)print

("我的cpu是%d核的"

% corecount)

# 獲取當前活動的程序列表

print

(multiprocessing.active_children(

))

import multiprocessing

import random

import time

deffn()

: name = multiprocessing.current_process(

).name

print

("開始執行程序:"

, name)

time.sleep(random.randint(1,

4))print

("執行結束:"

, name)

# 多程序

# 非同步執行程序

defprocessasync()

: p1 = multiprocessing.process(target=fn, name=

"小分隊1"

) p2 = multiprocessing.process(target=fn, name=

"小分隊2"

) p1.start(

) p2.start(

)# 同步執行

defprocesssync()

: p1 = multiprocessing.process(target=fn, name=

"小分隊1"

) p2 = multiprocessing.process(target=fn, name=

"小分隊2"

) p1.start(

) p1.join(

) p2.start(

) p2.join(

)# 加鎖

defprocesslock()

:# 程序鎖

lock = multiprocessing.lock(

) p1 = multiprocessing.process(target=fn2, name=

"小分隊1"

, args=

(lock,))

p2 = multiprocessing.process(target=fn2, name=

"小分隊2"

, args=

(lock,))

p1.start(

) p2.start(

)def

fn2(lock)

: name = multiprocessing.current_process(

).name

print

("開始執行程序:"

, name)

# 加鎖

# 方式一

if lock.acquire():

print

("正在工作..."

) time.sleep(random.randint(1,

4)) lock.release(

)# 方式二

with lock:

print

("%s:正在工作..."

% name)

time.sleep(random.randint(1,

4))print

("%s:執行結束:"

% name)

if __name__ ==

'__main__'

:# processasync() # 非同步執行

# processsync() # 同步執行

processlock(

)# 加程序鎖

import multiprocessing

import time

deffn

(sem)

:with sem:

name = multiprocessing.current_process(

).name

print

("子執行緒開始:"

, name)

time.sleep(3)

print

("子執行緒結束:"

, name)

if __name__ ==

'__main__'

: sem = multiprocessing.semaphore(3)

for i in

range(8

):multiprocessing.process(target=fn, name=

"小分隊%d"

%i, args=

(sem,))

.start(

)

Python中的多程序

編寫完的 沒有執行時稱為程式,正在執行的 稱為程序。程式是死的 靜態的 程序是活的 動態的 作業系統輪流讓各個任務交替執行,由於cpu的執行速度實在是太快了,我們感覺就像所有任務都在同時執行一樣。多程序中,每個程序中所有資料 包括全域性變數 都各自擁有乙份,互不影響。例如 我們啟動了qq,qq就是乙...

python多程序 python多程序

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

python多程序的坑 Python多程序相關的坑

python的multiprocessing模組實現了多程序功能,但官方文件上只有一些比較簡單的用法,主要是使用函式作為process的target,而如何在class中使用多程序並沒有多講解。google出兩篇比較詳細的文章,建議從它們入門 下面記錄一下自己這週在python多程序上碰到的坑 建立...