Mic*_*hal 2 python macos multiprocessing python-3.x
最近我想使用并行处理加速我的一些代码,因为我有一个四核i7,它似乎是浪费.我学习了python(我使用v 3.3.2,如果它匹配)GIL以及如何使用多处理模块克服它,所以我写了这个简单的测试程序:
from multiprocessing import Process, Queue
def sum(a,b):
su=0
for i in range(a,b):
su+=i
q.put(su)
q= Queue()
p1=Process(target=sum, args=(1,25*10**7))
p2=Process(target=sum, args=(25*10**7,5*10**8))
p3=Process(target=sum, args=(5*10**8,75*10**7))
p4=Process(target=sum, args=(75*10**7,10**9))
p1.run()
p2.run()
p3.run()
p4.run()
r1=q.get()
r2=q.get()
r3=q.get()
r4=q.get()
print(r1+r2+r3+r4)
Run Code Online (Sandbox Code Playgroud)
使用cProfile测量的代码运行大约48秒,但是单个进程代码
def sum(a,b):
su=0
for i in range(a,b):
su+=i
print(su)
sum(1,10**9)
Run Code Online (Sandbox Code Playgroud)
在大约50秒内运行.我知道这种方法有开销,但我预计改进会更加激烈.fork()的错误不适用于我,因为我在Mac上运行代码.
| 归档时间: |
|
| 查看次数: |
3361 次 |
| 最近记录: |