如果执行得太快,Python 线程会干扰

标签 python multithreading queue

我有许多线程是并行执行的,因为线程通常是用来做的:D

除非我放慢他们的速度,否则他们往往会互相操纵,写信给彼此的空间。因此,当我打印一条语句时,我在某些线程中看到了似乎是“回声”(不是编码术语,而是文字回声)的内容。

当我放慢他们的速度时,不会出现木偶戏。

这是运行这些虚拟帐户时我在终端上得到的示例:

Meikitotokiku83: day_2, Wed Jun 10 03:32:53 2015, nine
Robinia6424: day_2, Wed Jun 10 03:32:53 2015, four
Meikitotokiku83: day_7, Wed Jun 10 03:32:53 2015, fifteen
Meikitotokiku83: day_7, Wed Jun 10 03:32:53 2015, thirteen
Mekushishifu643: day_7, Wed Jun 10 03:32:53 2015, two
Meikitotokiku83: day_7, Wed Jun 10 03:32:53 2015, eleven
Meikitotokiku83: day_2, Wed Jun 10 03:32:53 2015, six
Mekushishifu643: day_2, Wed Jun 10 03:32:53 2015, three
**Meikitotokiku83: day_7, Wed Jun 10 03:32:53 2015, ten 
Meikitotokiku83: day_7, Wed Jun 10 16:33:03 2015, ten 
 Meikitotokiku83: day_7, Wed Jun 10 16:33:03 2015, ten 
Meikitotokiku83: day_7, Wed Jun 10 16:33:03 2015, ten** 
Meikitotokiku83: day_2, Wed Jun 10 03:32:53 2015, fourteen
Meikitotokiku83: day_7, Wed Jun 10 03:32:53 2015, sixteen
DaDaFurstig6304: day_7, Wed Jun 10 03:32:53 2015, five
DoraDiggle5529: day_7, Wed Jun 10 03:32:53 2015, one
Meikitotokiku83: day_2, Wed Jun 10 03:32:53 2015, seven

注意标记为“十”的回声。

我真的希望我不必发布我的代码,因为如果我的 300 行类没有发布在这里,大多数 python 程序员可能会认识到我不在这个线程问题中。

这些类(class)相当多,所以我不会费心将它们张贴在这里。我怀疑这是我只是没有意识到的常见问题,例如处理器问题?

造成这种情况的常见原因是什么?如何在不使用时间延迟的情况下避免这种情况?

最佳答案

这些线程是否正在访问共享数据——即同一个变量或多个变量?如果是这样,并且如果数据不受锁/同步保护,那么它很容易受到线程 race conditions 的影响。 .在任何并发编程环境中都是如此,而不仅仅是 Python。 Check out this nice summary of Python synchronization .

关于如果执行得太快,Python 线程会干扰,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30770702/

相关文章:

python - Python中Spark RDD的列操作

python - 在运行时在 Python 3 中动态加载模块

python - Celery:我可以使用 Celery 一次执行一个函数实例吗?

c# - 等待事件引发线程取消

java - 如何使用集合和队列查找图的可达性

python - 打印二叉树中所有可能的路径

python - 如何从Python实时读取终端输出?

c# - 如何保持进程在远程 Windows 服务器上运行

Python多线程使用队列 - 程序永远被阻塞

c++ - 关于在 C++ 模板化队列中实现 put() 函数的建议?