如何在Python中多核心并行运行两个脚本(Windows环境)
在Windows下将Python脚本绑定到指定CPU核心并行运行
你现在用的exec循环方式是串行执行的——两个脚本会在同一个进程里依次运行,既没法利用多核心,更做不到指定核心运行。要实现需求,得用多进程+CPU亲和性绑定的方案,以下是两种可行方法:
方法一:用psutil库(简单易实现)
先安装依赖:
pip install psutil
主脚本代码:
import multiprocessing import psutil import os def run_script(script_path, core_id): # 绑定当前进程到指定CPU核心(Windows核心编号从0开始) current_process = psutil.Process(os.getpid()) current_process.cpu_affinity([core_id]) # 执行目标脚本 with open(script_path, 'r') as f: exec(f.read()) if __name__ == '__main__': # 替换为你的脚本路径 script_paths = [ r"C:\Users\USER\1\A.py", r"C:\Users\USER\2\A.py" ] # 绑定到核心0和核心1(对应物理核心1和2) cores = [0, 1] # 创建并启动进程 processes = [] for path, core in zip(script_paths, cores): p = multiprocessing.Process(target=run_script, args=(path, core)) p.start() processes.append(p) # 等待所有进程完成 for p in processes: p.join()
方法二:用Windows原生API(无需第三方库)
如果不想安装额外依赖,可以直接调用Windows的kernel32 API设置CPU亲和性:
import multiprocessing import os import ctypes # 调用Windows内核API kernel32 = ctypes.WinDLL('kernel32', use_last_error=True) def set_cpu_affinity(core_id): # 生成CPU掩码:仅允许指定核心运行 cpu_mask = 1 << core_id # 获取当前进程句柄 process_handle = kernel32.GetCurrentProcess() # 设置亲和性 if not kernel32.SetProcessAffinityMask(process_handle, cpu_mask): raise ctypes.WinError(ctypes.get_last_error()) def run_script(script_path, core_id): set_cpu_affinity(core_id) with open(script_path, 'r') as f: exec(f.read()) if __name__ == '__main__': script_paths = [ r"C:\Users\USER\1\A.py", r"C:\Users\USER\2\A.py" ] cores = [0, 1] processes = [] for path, core in zip(script_paths, cores): p = multiprocessing.Process(target=run_script, args=(path, core)) p.start() processes.append(p) for p in processes: p.join()
关键注意事项
- 核心编号规则:Windows的CPU核心编号从0开始,比如物理核心1对应编号0,物理核心2对应编号1。如果你的CPU有超线程,逻辑核心编号会更多,可通过
psutil.cpu_count(logical=False)查看物理核心数,psutil.cpu_count(logical=True)查看逻辑核心数。 - 输出交错:两个子进程的输出会直接打印到主控制台,可能出现内容交错的情况(这是多进程并行的正常现象),如果需要有序输出,可以给输出操作加进程锁。
- 进程独立性:每个子进程拥有独立的内存空间,脚本A.py中的全局变量不会在进程间共享,若需要数据交互,得用
multiprocessing的队列、管道等机制。
内容的提问来源于stack exchange,提问作者user20032724
相关产品推荐
相关产品推荐

