from threading import Thread
import time
def Function1():
print "11"
print "12"
time.sleep(5)
print "13"
print "14"
def Function2():
print "21"
print "22"
time.sleep(10)
print "23"
print "24"
for i in range(3)
t1= Thread(target=Function1())
t2= Thread(target=Function2())
t1.start()
t2.start()
以上程序按顺序运行...
11
12
13
14
21
22
23
24
11
12
13
14
21
22
23
24
11
12
13
14
21
22
23
24
如何同时运行两个函数(线程)?我不想使用多处理.. 我需要编写 python 脚本来进行性能测试...为此我需要线程同时运行 有什么办法可以解决这个问题吗?
最佳答案
您的问题是 target=
关键字现在设置为函数的返回值。您想要函数本身。
所以,现在实际发生的事情是:
- 调用
Function1()
t1
将其目标设置为None
(Function1()
的返回值- 针对
Function2()
和t2
重复 1-2。 - 启动
t1
和t2
线程,这两个线程都以None
作为目标。这没有任何效果。
替换
t1= Thread(target=Function1())
t2= Thread(target=Function2())
与
t1= Thread(target=Function1)
t2= Thread(target=Function2)
如果您希望在多个内核上并行执行 Python 代码,那么您唯一的希望就是多处理
。因为,正如另一个答案中提到的,CPython解释器只允许同时执行一段Python代码(参见“全局解释器锁”)。
网上可以找到很多这方面的信息。
关于python - 无法在Python中同时运行线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35890910/