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

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日

悬赏问题

  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料