并行处理本身是可以提高计算效率的,但是必须要符合一定的条件。如果并行处理的任务之间存在依赖关系,或者数据传输的开销过大,都会导致并行处理效率的下降,甚至是比串行处理还要慢。
下面是一个简单的并行处理示例:
import multiprocessing
import time
def worker(num):
"""worker function"""
print('Worker %s started' % num)
time.sleep(2)
print('Worker %s finished' % num)
if __name__ == '__main__':
jobs = []
for i in range(5):
p = multiprocessing.Process(target=worker, args=(i,))
jobs.append(p)
p.start()
for j in jobs:
j.join()
print('All workers finished')
这个示例程序会启动 5 个进程,每个进程会执行 worker
函数。worker
函数会输出开始和结束的信息,然后会休眠 2 秒模拟一个耗时的计算过程。在主进程中,我们使用了 join
方法来等待所有进程执行完成。
如果你发现运行这个程序的实际时间比单线程执行时间还要长,那么可能是因为启动进程和传输数据的时间开销比较大,导致并行处理效率下降。可以尝试减少进程数或者将较大的数据结构转换为共享内存来提升效率。