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多程序上碰到的坑 建立...