关于Kamaelia,上面的答案并没有真正涵盖这里的好处。 Kamaelia的方法提供了一个统一的界面,这个界面非常实用,用于处理线程,生成器和处理器。 单个系统中的进程用于并发。

从根本上说,它提供了一个运行物品的隐喻,它有收件箱和发件箱。 您将消息发送到发件箱,当连接在一起时,消息从发件箱流向收件箱。 无论您是使用生成器,线程或进程,还是与其他系统通信,这个比喻/ API都保持不变。

“不完美”的部分原因是由于尚未为收件箱和发件箱添加语法糖(虽然这正在讨论中) - 重点是系统的安全性/可用性。

以上面使用裸线程的生产者消费者为例,这在Kamaelia中就是这样:

Pipeline(Producer(), Consumer() )

在这个例子中,如果它们是线程组件或其他方面并不重要,唯一的区别是它们之间从使用角度来看是组件的基类。 Generator组件使用列表,使用Queue.Queues的线程组件和使用os.pipes的进程进行通信。

这种方法背后的原因是让难以调试错误。 在线程 - 或任何共享内存并发性中,您面临的首要问题是意外破坏共享数据更新。 通过使用消息传递,您可以消除一类错误。

如果你在任何地方都使用裸线程和锁,你通常会假设当你编写代码时你不会犯任何错误。 虽然我们都渴望这一点,但这种情况很少发生。 通过在一个地方包装锁定行为,您可以简化出错的地方。 (上下文处理程序有帮助,但无助于上下文处理程序之外的意外更新)

显然,不是每一段代码都可以写成消息传递和共享样式,这就是为什么Kamaelia还有一个简单的软件事务存储器(STM),这是一个非常巧妙的想法,有一个令人讨厌的名字 - 它更像是变量的版本控制 - 即 检查一些变量,更新它们并提交回来。 如果你发生冲突,你可以冲洗并重复。

相关链接:

Europython 09教程

每月发布

邮件列表

例子

示例应用

可重复使用的部件(发电机和螺纹)

无论如何,我希望这是一个有用的答案。 FWIW,Kamaelia设置的核心原因是使并发更安全。 更容易在python系统中使用,没有尾巴摇摆的狗。 (即大桶组件

我能理解为什么其他Kamaelia的答案被修改了,因为即使对我来说,它看起来更像是广告而不是答案。 作为Kamaelia的作者,我很高兴看到热情,但我希望这包含更多相关内容:-)

这就是我的说法,请注意这个答案的定义是有偏见的,但对我而言,Kamaelia的目标是尝试包装IMO的最佳实践。 我建议尝试一些系统,看看哪个适合你。 (如果这不适合堆栈溢出,对不起 - 我是这个论坛的新手:-)

python线程中再起线程_多线程 - Python中的线程化相关推荐

  1. delphi 多个线程 多个进度条_多线程有哪些优点?- Python每日3题(多线程专题)

    这里是Python7编程挑战-多线程专题! 每天学习3个问题,包括初级,中级,高级问题各1个. 今天是第2天!一起来呀,就7天! 每日3题是麦叔的面试系列专题之一,每天包括初级,中级,高级难度题目各一 ...

  2. python爬取百度贴吧中的所有邮箱_使用 Python 编写多线程爬虫抓取百度贴吧邮箱与手机号...

    原标题:使用 Python 编写多线程爬虫抓取百度贴吧邮箱与手机号 不知道大家过年都是怎么过的,反正栏主是在家睡了一天,醒来的时候登QQ发现有人找我要一份贴吧爬虫的源代码,想起之前练手的时候写过一个抓 ...

  3. python线程池并发_python 并发编程多线程之进程池/线程池

    一.验证GIL锁的存在 Python在设计之初就考虑到要在主循环中,同时只有一个线程在执行.虽然 Python 解释器中可以"运行"多个线程,但在任意时刻只有一个线程在解释器中运行 ...

  4. java线程的创建线程_多线程(Thread、线程创建、线程池)

    第1章 多线程 1.1 多线程介绍 学习多线程之前,我们先要了解几个关于多线程有关的概念. 进程:进程指正在运行的程序.确切的来说,当一个程序进入内存运行,即变成一个进程,进程是处于运行过程中的程序, ...

  5. java线程同步机制有哪些_多线程同步机制包括哪些,java线程同步机制

    多线程同步机制包括哪些什么是多线程同步机制,多线程同步机制包括:1.临界段用于实现"独占占有":2.信号量用于跟踪有限的资源:3.互斥是核心对象,可以实现不同线程之间的" ...

  6. 【python爬虫学习记录 持续更新】多线程多进程,带线程池爬取实例

    文章目录 简介 多线程codingFrame 多进程codingFrame 线程池与进程池 线程池爬取实例(主页url隐了 主要看思路 和如何使用线程池框架) 简介 进程是资源单位 线程是执行单位 每 ...

  7. python 循环定时器 timer显示数据_【Python】多线程、定时循环爬取优信二手车信息...

    爬虫 爬取优信二手车:循环遍历每页,获取相应的有价值字段信息,这里不详细阐释了. 多线程 Python中,使用concurrent.futures模块下的ThreadPoolExecutor类来实现线 ...

  8. java 监控对象是什么_多线程-Java中的对象监视器是什么意思? 为什么要使用这个词?...

    多线程-Java中的对象监视器是什么意思? 为什么要使用这个词? 在阅读有关Java线程的文章时,我经常注意到这样的表达:"当前线程是该对象的监视器的所有者". 我的意思是:线程有 ...

  9. python什么是高阶函数_说说 Python 中的高阶函数

    高阶函数(higher-order function)指的是:接受一个函数为参数,或者把函数作为结果值返回的函数1. 1 sorted() 比较常见的高阶函数是 sorted(),其内部的关键字参数 ...

最新文章

  1. 使用ThinkPHP过程中发现的一些坑
  2. fundamental-react在POC中的一个应用
  3. php的验证码要gd库,PHP利用GD库实现一个简单的验证码
  4. Spring4.x(3)---工厂模式设计IOC容器
  5. Flutter布局锦囊---简单的应用栏
  6. 学完计算机技术的感受,计算机培训心得体会
  7. namp常规扫描命令(超详细!推荐)
  8. Seeds超像素分割
  9. vs2010中svn使用教程_vs2010+ Ankhsvn使用详解
  10. 解决能登录微信却登不上网页的问题
  11. Docker数据管理:data container
  12. Windows十四种系统故障解决方法
  13. 【天池竞赛系列】菜鸟-需求预测与分仓规划初赛冠军解决方案
  14. 计算机开机速度慢是什么原因,电脑开机慢是什么原因?怎么处理?
  15. matlab求解存储论问题,运筹学课程08-存储论(胡运权 清华大学).pdf
  16. dojo初解和dojo.connect用法(转)
  17. 计算机html大作业聊天室,java大作业设计报告-JAVA聊天室.docx
  18. 西安知名IT互联网公司—为自己回西安做铺垫
  19. 谈判技巧---From一亩三分地帖子
  20. Freeswitch如何支持G729转码开源版本

热门文章

  1. linux 中ans 用法,JSON简介以及用法汇总
  2. 有开电商的集合了,了解Water Pamola通过恶意订单对电商发起攻击
  3. 002 PECompact 1.84
  4. MySQL的版本以及版本号
  5. 7、使用CallableStatement接口调用存储过程
  6. 原码的一位乘法和补码的一位乘法对比
  7. 寒假每日一题2022【week2 未完结】
  8. C++中的空指针和void * 指针
  9. 2.1.4 进程通信
  10. JVM新生代老年代GC分析