任何帮助,将不胜感激.提前致谢.
编辑:我不认为内存使用量将是一个问题,但我不知道(8 GB RAM)
解决方法
使Perl线程与其他线程不同的一个关键因素是默认情况下不共享数据.这使得线程更容易和更安全,您不必担心库或大多数代码的线程安全性,只需要担心线程位.然而,它可能是性能拖累和内存饥饿,因为Perl必须将解释器的副本和所有加载的模块放入每个线程中.
说到分叉,我只会谈论Unix. Perl使用线程在Windows上模拟fork,它可以工作,但它可能很慢而且有问题.
分叉优势
>创建一个分叉非常快
>非常强大
分叉缺点
>流程之间的沟通可能很慢而且很尴尬
线程优势
>线程协调和数据交换相当容易
>线程相当容易使用
线程缺点
>每个线程占用大量内存
>线程启动缓慢
>线程可能有错误(你的perl越近越好)
> Database connections are not shared across threads
如果文档是最新的,那最后一个有点麻烦.如果你要做很多sql,不要使用线程.
通常,为了从Perl线程中获得良好的性能,最好启动一个线程池并重用它们.可以更容易地创建,使用和丢弃叉子.
真正归结为什么适合您的思维方式和您的特定问题.
无论哪种情况,您可能都想要管理您的工作人员.为了分叉,你将要使用Parallel::ForkManager或Child.孩子特别好,因为它内置了进程间通信.
对于线程,您将要使用threads::shared,Thread::Queue和perlthrtut.
在阅读有关Perl线程的文章时,请记住,当它们在2002年引入5.8.0时它们有点废话,并且只能通过5.10.1进行维护.在那之后他们已经相当坚定了.有关其效率和稳健性的信息和意见往往会过时.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。