如何解决为什么 PyPy3 在启动新进程时速度较慢?
我想知道为什么当我在 PyPy3 中启动新进程 (multiprocessing.Process) 时,它实际上比在 CPython 上做同样的事情慢 2 倍。我也想知道任何解决方案。
这是我为说明这种效果而编写的一些代码:
import multiprocessing as mp
from time import sleep,time
class A(object):
def __init__(self,*args,**kwargs):
# do other stuff
#self.p_conn,self.child_conn = mp.Pipe()
#self.q = mp.Queue()
def do_something(self,i):
sleep(0.1)
s = '%s * %s = %s' % (i,i,i*i)
#self.child_conn.send(s)
#self.q.put(i**2)
def run(self):
processes = []
for i in range(500):
p = mp.Process(target=self.do_something,args=(i,))
processes.append(p)
[x.start() for x in processes]
#for i in range(50):
# print(self.p_conn.recv())
#for i in range(50):
# print(self.q.get())
if __name__ == '__main__':
a = A()
s = time()
a.run()
print(f"Took {time()-s} seconds...")
CPython 用了大约 18 秒,而 PyPy3 用了大约 37 秒来执行相同的代码。 (其他测试还表明 PyPy3 在我的系统中启动进程时比 CPython 慢 2 倍......)
我想知道如何有效地解决问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。