併發程式設計之守護程序、互斥鎖以及佇列等相關內容-37
阿新 • • 發佈:2020-08-24
···建立程序的兩種方式
····第一種
from multiprocessing import Process
import time
def task(n):
print('我是子程序')
time.sleep(n)
print('子程序結束')
if __name__ == '__main__':
# args=(), kwargs={}
# t=Process(task,args=(1,))
t = Process(target=task, kwargs={'n': 1})
t.start() # 通知作業系統,開啟程序,執行task函式
print('主')
····第二種:
from multiprocessing import Process
import time
class Task(Process):
def __init__(self, n):
super().__init__()
self.n = n
def run(self):
print('我是子程序')
time.sleep(self.n)
print('子程序結束')
if __name__ == '__main__':
t = Task(1)
# t.run(1) # 不是呼叫t.run(),而是呼叫t.start()
t.start()
print('主')
···join的使用
from multiprocessing import Process
import time
def task(n):
print('我是子程序')
time.sleep(n)
print('子程序結束')
if __name__ == '__main__':
ctime = time.time()
t = Process(target=task, kwargs={'n': 1})
t2 = Process(target=task, kwargs={'n': 2})
t.start()
t2.start()
t.join() # 等待t子程序執行完成
t2.join() # 等待t2子程序執行完成
print('主')
ctime2 = time.time()
print(ctime2 - ctime)
···程序之間資料隔離
from multiprocessing import Process
import time
age = 18
def task(n):
global age # 區域性修改全域性
age = 99