import multiprocessing import time def music(): for i in range(3): print('听音乐...') time.sleep(0.2) def coding(): for i in range(3): print('敲代码...') time.sleep(0.2) if __name__ == '__main__': music_process = multiprocessing.Process(target=music) coding_process = multiprocessing.Process(target=coding) music_process.start() coding_process.start()
4、进程执行带有参数的任务
1
Process([group [, target [, name [, args [, kwargs]]]]])
import multiprocessing import time def music(num): for i in range(num): print('听音乐...') time.sleep(0.2) def coding(count): for i in range(count): print('敲代码...') time.sleep(0.2) music_process = multiprocessing.Process(target=music, args=(3, )) coding_process = multiprocessing.Process(target=coding, kwargs={'count': 3}) music_process.start() coding_process.start()
案例:多个参数传递
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
import multiprocessing import time def music(num, name): for i in range(num): print(name) print('听音乐...') time.sleep(0.2) def coding(count): for i in range(count): print('敲代码...') time.sleep(0.2) if __name__ == '__main__': music_process = multiprocessing.Process(target=music, args=(3, '多任务开始')) coding_process = multiprocessing.Process(target=coding, kwargs={'count': 3}) music_process.start() coding_process.start()
① 导入线程模块 import threading ② 通过线程类创建线程对象 线程对象 = threading.Thread(target=任务名) ② 启动线程执行任务 线程对象.start()
参数名
说明
target
执行的目标任务名,这里指的是函数名(方法名)
name
线程名,一般不用设置
group
线程组,目前只能使用None
2、线程创建与启动代码
单线程案例:
1 2 3 4 5 6 7 8 9 10 11 12
import time def music(): for i in range(3): print('听音乐...') time.sleep(0.2) def coding(): for i in range(3): print('敲代码...') time.sleep(0.2) if __name__ == '__main__': music() coding()
多线程案例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
import time import threading def music(): for i in range(3): print('听音乐...') time.sleep(0.2) def coding(): for i in range(3): print('敲代码...') time.sleep(0.2) if __name__ == '__main__': music_thread = threading.Thread(target=music) coding_thread = threading.Thread(target=coding) music_thread.start() coding_thread.start()
3、线程执行带有参数的任务
参数名
说明
args
以元组的方式给执行任务传参
kwargs
以字典方式给执行任务传参
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
import time import threading def music(num): for i in range(num): print('听音乐...') time.sleep(0.2) def coding(count): for i in range(count): print('敲代码...') time.sleep(0.2) if __name__ == '__main__': music_thread = threading.Thread(target=music, args=(3, )) coding_thread = threading.Thread(target=coding, kwargs={'count': 3}) music_thread.start() coding_thread.start()
4、主线程和子线程的结束顺序
1 2 3 4 5 6 7 8 9 10 11 12 13 14
import time import threading def work(): for i in range(10): print('work...') time.sleep(0.2) if __name__ == '__main__': # 创建子进程 work_thread = threading.Thread(target=work) # 启动线程 work_thread.start() # 延时1s time.sleep(1) print('主线程执行完毕')
☆ 设置守护线程方式一
1 2 3 4 5 6 7 8 9 10 11 12 13 14
import time import threading def work(): for i in range(10): print('work...') time.sleep(0.2) if __name__ == '__main__': # 创建子进程并设置守护主线程 work_thread = threading.Thread(target=work, daemon=True) # 启动线程 work_thread.start() # 延时1s time.sleep(1) print('主线程执行完毕')
☆ 设置守护线程方式二
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
import time import threading def work(): for i in range(10): print('work...') time.sleep(0.2) if __name__ == '__main__': # 创建子进程 work_thread = threading.Thread(target=work) # 设置守护进程 work_thread.setDaemon(True) # 启动线程 work_thread.start() # 延时1s time.sleep(1) print('主线程执行完毕')
5、线程间的执行顺序
1 2 3
for i in range(5): sub_thread = threading.Thread(target=task) sub_thread.start()