Python中如何同时执行两个任务?multiprocessing使用求解
代码现存的核心问题
- 构造函数参数非法:Python语法不支持在同一次函数调用中重复传入同一个关键字参数,原代码连续为
multiprocessing.Process传入两次target、两次args,会直接触发语法错误,程序无法正常运行。 target参数传值逻辑错误:Process的target参数要求传入可调用对象本身,而非可调用对象的执行结果。原代码中target=print('hi')会直接在主进程执行一次打印逻辑,再把调用print返回的None值传给Process,子进程并不会执行预设的打印任务。- 并行逻辑实现偏差:单个
Process实例仅能绑定一个执行入口,要并行执行两个独立任务,需要分别创建两个Process实例,无法将两个任务的参数混杂在同一个构造调用中传入。
可行实现方案
import multiprocessing # 定义两个独立的并行任务 def print_hi(): print('hi') def print_hello(): print('hello') if __name__ == '__main__': # 为每个任务单独创建进程实例 process_hi = multiprocessing.Process(target=print_hi) process_hello = multiprocessing.Process(target=print_hello) # 启动进程 process_hi.start() process_hello.start() # 阻塞等待进程执行完成,回收系统资源 process_hi.join() process_hello.join()
带参数传递的扩展写法
如果任务需要传入外部参数,需要为对应进程单独配置args参数,且参数必须以元组形式传入,示例如下:
def print_custom_content(content): print(content) if __name__ == '__main__': test_i = "自定义传入内容" # 两个进程分别绑定独立的参数 p1 = multiprocessing.Process(target=print_custom_content, args=(test_i,)) p2 = multiprocessing.Process(target=print_custom_content, args=("hello",)) p1.start() p2.start() p1.join() p2.join()
内容的提问来源于stack exchange,提问作者Aarushiswinner
相关产品推荐
相关产品推荐

