首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >事件驱动线程创建

事件驱动线程创建
EN

Stack Overflow用户
提问于 2011-07-17 12:29:11
回答 1查看 602关注 0票数 0

我一直在试着用各种方法解决以下问题,但没有结果。

我有大量的(python)模块/脚本和一个杰出的脚本K.py。

当K.py被执行时,它会生成一些信息,比如一个国家名称。现在,在其他模块(数百个)中,有一些模块可以使用由K.py作为输入传递给它们的信息(例如,国家名称)来执行。递归地说,上面的每个模块都会生成一些信息(城镇名称、街道号码等),这些信息可以作为其他模块的输入,等等。这当然会导致执行二叉树的脚本。

指向注意事项。

  • 上面的模块/脚本(数百)可以独立运行(它们完全不相互依赖)。
  • 当所有模块都已完成执行时,我应该能够做出判断(即运行K.py必须阻塞,直到已触发的扩展模块二叉树被“连接”为止)。
  • 如果对于每个信息I和可运行的脚本S(即S可以以i作为输入运行),我决定创建一个新的线程,那么我可能会得到一个指数级的线程数(不是吗?)

如何使用python线程(任何API)来“安全”地实现解决方案?(pseudo_code ?)

提前感谢你的智慧。

EN

回答 1

Stack Overflow用户

发布于 2011-07-17 12:37:00

解决这个问题的通常方法是创建一个工人队列并将单个作业存储在那里。所以你需要用某种编程的方式来表示应该由一个线程来完成的工作。

如果有,则可以使用提供“线程”池的多处理包 (参见16.3.1.5)。和一个多线程队列来存储作业。

现在,每个进程从队列中获取一个作业,执行它--可能会向队列中添加新的作业--并且当它完成时,再执行下一个作业。当队列为空时,您就完成了。

请注意,这使用了多处理包,因为至少在带有GIL的CPython中,多线程python程序只有在大IO或其他阻塞活动的情况下才有优势。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6723802

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档