【问题标题】:multithreading code with rendevous objects time delay while running the code运行代码时具有集合对象时间延迟的多线程代码
【发布时间】:2020-12-14 20:31:11
【问题描述】:

首先感谢您的帮助。对此,我真的非常感激。 我正在运行一些 Python 多线程代码,其中每个线程都在流式传输 Rendevous Object 的结果,这基本上可以正常工作。但是现在我发现,在运行时,结果会延迟,就好像我的计算机无法在短期内处理所有线程一样。我想知道是否可以通过结合使用多线程和多处理来加快进程?我不太确定这是否a)甚至可能和b)解决我的问题。或者我是否需要“仅仅”更多的 CPU 能力?

感谢您的帮助和问候!

【问题讨论】:

  • 如果您可以在问题中插入一些最小的示例代码来显示所描述的行为,这将有所帮助。也许您可以精简您的代码,让进程开始做一些随机的事情。
  • 感谢您依赖@bjhend。请在下面找到我的答案。

标签: python python-3.x python-multiprocessing python-multithreading


【解决方案1】:

感谢您的回复@bjhend。请在下面找到更多信息。

基本上,我创建了基于 gPRC 的线程,其中_MultiThreadedRendezvous 对象在for 循环中进行流式传输。每个线程的结果/反馈将存储在自己的 pandas 数据帧中,不会保存在磁盘上。 我确实使用了通用线程模块而不是并发期货模块(如果这已经有所不同了吗?)。至少我决定使用多线程而不是多处理,因为我相信我有 I/O 绑定进程。总的来说,我以这种方式开始了大约 2000 个线程。

由于_MultiThreadedRendezvous 对象的反馈数据之一包含时间,我发现在一些运行时,结果会“延迟”(就像我上面提到的那样)。无论如何,正如我想象的那样,整个过程就像描述Queue 模块/功能的“工人/客户程序”(先到先得;每个队列就像一个订单等),我觉得 CPU时钟频率是我最关心的。另一方面,如果我想象在 28 核机器上而不是 4 核 cpu 上运行代码,我认为它应该执行得更快(只是一种感觉......再次,理性地我认为时钟频率与可能的线程相结合会更好地增加流程)。

希望这些信息对您有所帮助。再次感谢!

【讨论】:

  • 抱歉,这不是您的 SO 问题的答案。请编辑您的问题并在此处插入新文本并删除此答案。 SO 并不是一个讨论论坛,而是一个用户贡献的特定编程问题及其可验证的具体答案的知识库。我的评论是作为经验丰富的用户的评论评论,以帮助您改进问题。
猜你喜欢
  • 2021-09-07
  • 2020-08-17
  • 1970-01-01
  • 1970-01-01
  • 2018-09-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多