Python简单多进程demo

时间:2021-07-14 09:28:48
'''
多线程使用场景:
怎样用Python的多线程提高效率?
io操作不占用CPU
计算操作占用CPU
Python多线程不适合CPU操作密集型的任务,适合io操作密集型的任务
如果有CPU操作密集型的任务需要用多进程,启动八个进程每个进程里一个线程,一共八个线程
在八核上运行,可以利用八核了,唯一的坏处是数据不能共享
怎样启动多进程呢?
'''
import multiprocessing
import time
import threading # 功能:启动10个进程,每个进程里启动一个线程
def thread_run():
print(threading.get_ident())
def run(name):
time.sleep(2)
print("hello",name)
t = threading.Thread(target=thread_run,)
t.start()
if __name__ == '__main__':
for i in range(10):
p = multiprocessing.Process(target=run, args=('bob{0}'.format(i),))
p.start()

打印子进程和父进程信息:

'''
每个进程都是由他的父进程启动的,每个进程都有一个父进程
'''
import os
from multiprocessing import Process def info(title):
print(title)
print('module name:',__name__) # 模块名
print('parent process:',os.getppid()) # 父进程ID
print('process id:', os.getpid()) # 本进程ID
print('\n\n') def f(name):
info('\033[31;1mfunction f\033[0m')
print('hello',name) if __name__ == '__main__':
info('\033[32;1m main process line\033[0m')
p = Process(target=f, args=('bob',))
p.start()
p.join() '''
main process line
module name: __main__
parent process: 4436
process id: 6032 function f
module name: __mp_main__
parent process: 6032
process id: 5800 hello bob
'''