from multiprocessing import Queue, Process
import os
import time
def test():
time.sleep(2)
print(f'这个进程运行test方法,进程号{os.getpid()}')
if __name__ == '__main__':
# 创建进程
p = Process(target=test)
p.start()# 启动进程
p.join()# 等待进程结束
方法2
from multiprocessing import Queue, Process
import os
class MyProcess(Process):
def run(self):
time.sleep(2)
print('this is process {}'.format(os.getpid()))
def __del__(self):
print('del the process {}'.format(os.getpid()))
if __name__ == '__main__':
p = MyProcess()
p.start()
print('ths process is ended')
进程池
from multiprocessing import Pool, Process
import os
def test():
print('none')
def get_pool(n=5):
# 创建线程池
p = Pool(n)
# 将需要运行的程序放到池子里面
[p.apply_async(x) for x in [test]*10]
p.close()
p.join()
if __name__ == '__main__':
get_pool()
进程锁
from multiprocessing import Pool, Lock
muex = Lock()
def test():
if muex.acquire():
f = open('./test_pro.txt', 'r+', encoding='utf-8')
x = f.read()
if not x:
f.write('0')
else:
f.seek(0)
f.write(str(int(x)+1))
f.close()
muex.release()
if __name__ == '__main__':
p = Pool(5)
for i in range(10):
p.apply_async(test)
p.close()
p.join()
with open('./test_pro.txt', 'r+', encoding='utf-8') as f:
print(f.read())