我有许多线程是并行执行的,因为线程通常是用来做的: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/