Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
线程上的Python问题_Python_Multithreading_Asynchronous - Fatal编程技术网

线程上的Python问题

线程上的Python问题,python,multithreading,asynchronous,Python,Multithreading,Asynchronous,我尝试在两个函数上同时运行两个线程,如下所示: import threading def functionA(): for i in range(5): print "Calling function A" def functionB(): for i in range(5): print "Calling function B" t1 = threading.Thread(functionA()) t2 = threading.Thread

我尝试在两个函数上同时运行两个线程,如下所示:

import threading

def functionA():
    for i in range(5):
        print "Calling function A"

def functionB():
    for i in range(5):
        print "Calling function B"

t1 = threading.Thread(functionA())
t2 = threading.Thread(functionB())

t1.start()
t2.start()
结果:

调用函数A 调用函数A 调用函数A 调用函数A 调用函数A 调用函数B 调用函数B 调用函数B 调用函数B 调用函数B

但不幸的是,在尝试了几次之后。我不能得到结果

预期结果:

调用函数A 调用函数B 调用函数A 调用函数B 调用函数A 调用函数B 调用函数A 调用函数B 调用函数A

有人可以指导我,使两个线程可以同时运行,并产生所需的结果。提前感谢。

您正在调用函数,并将结果传递给
线程
构造函数,而不是传递函数。此外,必须使用
target
参数(而不是先出现的未使用的
)。只需使用
Thread(target=function)
Thread(target=functionB)
。注意函数后面缺少paren

请注意,在CPython中仍然无法获得多线程,但这是一个不同的问题。

您正在调用函数,并将结果传递给
线程
构造函数,而不是传递函数。此外,必须使用
target
参数(而不是先出现的未使用的
)。只需使用
Thread(target=function)
Thread(target=functionB)
。注意函数后面缺少paren

请注意,您仍然无法在CPython中获得多线程,但这是一个不同的问题。

已经回答了如何正确使用线程,因此我将重点介绍您希望得到的输出

您很可能无法获得所需的输出。线程执行的时间不能保证,尤其是在Python中。操作系统调度会影响每个线程何时开始运行。当运行这样的两个线程时,您实际上是在说“这两项工作不依赖于彼此的顺序,可以同时运行”

您可以得到如下输出:

 a,a,b,b,a,a,b,b,a,b
或:

每次执行程序时,它都会发生变化。不要依赖于线程执行的顺序

Python中的线程是一种危险的野兽。Python中从来没有两个线程同时运行。请阅读全局解释锁以了解更多信息。

已经回答了如何正确使用线程,因此我将重点介绍您想要的输出

您很可能无法获得所需的输出。线程执行的时间不能保证,尤其是在Python中。操作系统调度会影响每个线程何时开始运行。当运行这样的两个线程时,您实际上是在说“这两项工作不依赖于彼此的顺序,可以同时运行”

您可以得到如下输出:

 a,a,b,b,a,a,b,b,a,b
或:

每次执行程序时,它都会发生变化。不要依赖于线程执行的顺序


Python中的线程是一种危险的野兽。Python中从来没有两个线程同时运行。阅读全局解释锁了解更多信息。

如果您正在编写一个新线程,操作系统将负责线程如何使用处理器。这就是排序不规则的原因。您应该使用另一个变量来定义哪个函数具有turn。但这仍然是一个坏主意。

如果您正在编写一个新线程,操作系统将负责线程如何使用处理器。这就是排序不规则的原因。您应该使用另一个变量来定义哪个函数具有turn。但这仍然是个坏主意。

如果发布python 3.2,那就太好了,因为下面的链接中有内置的库可以帮助我实现目标


不过,我们将研究其他有帮助的成员提供的替代方案。再次感谢您提供的帮助。

如果发布python 3.2,那就太好了,看看下面的链接,有一些内置库可以帮助我实现目标


不过,我们将研究其他有帮助的成员提供的替代方案。再次感谢您提供的帮助。

感谢您的投入和帮助。感谢您的投入和帮助。感谢您的投入和帮助。感谢您的投入和帮助。