angel725 2017-02-26 10:13 采纳率: 77.3%
浏览 8208
已结题

python 多线程怎么同时一直运行

 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那它们就依次运行一次就停了。
但我的目的是:三个线程启动后就一起同时运行。直到我手动关闭。)

  • 写回答

3条回答 默认 最新

  • qfz129 2019-06-01 18:28
    关注

    上面瞎扯什么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)
    完全可以正常并行。

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 1月6日