import threading
import time
def a():
while 1:
for x in range(3):
print(x)
time.sleep(1)
def b():
while 1:
for y in range(4,6):
print(y)
time.sleep(1)
def c():
while 1:
for z in range(7,10):
print(z)
time.sleep(1)
aa = threading.Thread(target=a())
bb = threading.Thread(target=b())
cc = threading.Thread(target=c())
aa.start()
bb.start()
cc.start()
我的目的是 这三个线程启动后就一起同时运行。直到我手动关闭。
可是,现在它只是aa在运行,那两个执行。
这是怎么回事?
(如果函数里不加while那它们就依次运行一次就停了。
但我的目的是:三个线程启动后就一起同时运行。直到我手动关闭。)
上面瞎扯什么GIL,这个地方和GIL没关系。
aa = threading.Thread(target=a())
bb = threading.Thread(target=b())
cc = threading.Thread(target=c())
这几行写错了,不应该加括号,否则就变成执行了。
应该这样
aa = threading.Thread(target=a)
bb = threading.Thread(target=b)
cc = threading.Thread(target=c)
完全可以正常并行。
看看是不是CPU一直被线程a占用。python有Gil,一次只能有一个线程执行
由于GIL限制,python没法像c++ java那样执行多线程,只能交替执行。你可以试试协程,或许能达到相应效果。