相关:
强化学习:手动实现一个并行环境采样的代码 —— SynVectorEnv
之前写了一个python环境下的多进程仿真环境采样的代码库,后来突发奇想,想到是否可以使用python的协程来解决python多进程同步通信的等待时间消耗,后来写了个Demo的代码,发现没有啥用,准确来说确实有提高,性能提高的又1%到3%的水平,但是考虑到性能测评时的一些不确定性,因此这个结果就相当于说明啥用都没有。
根据前文的分析(强化学习:手动实现一个并行环境采样的代码 —— SynVectorEnv),这个多进程采样的library,性能最大的瓶颈就在queue队列的同步等待上,因为单step的sample时间极短,和等待queue同步所花费的时间相比只大了近十倍左右,由此导致这个多进程采样的library的实际性能总是上不来,当然网上的GitHub中有清华大学团队和其他的一切高水平团队搞出了同样功能的C++版本的library作为python的扩展库,但是这个代码的难度较大,从而难以进行定制化的开发,为此我就想到了是不是可以使用python的协程来解决这个问题,不过最终发现其实没啥用,虽然没有解决问题但是却引出了一个新的问题,那就是“python协程是否可以解决python多进程队列等待的时间消耗”。
问询ChatGPT后得到答案:
由于协程的优势在于减少 I/O 阻塞时间,并不能直接优化多进程队列的 IPC 性能。
使用ChatGPT:
标签:采样,协程,python,代码,队列,进程 From: https://www.cnblogs.com/xyz/p/18657491