找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 4246|回复: 1

[求助] python thread阻塞问题

1

主题

1

帖子

7

积分

贫民

积分
7
pipeking 发表于 2016-4-8 09:00:06 | 显示全部楼层 |阅读模式
刚开始用python编程,需要用到并发处理,所以想用线程来解决。程序主题是等待用户输入,同时启动一个线程来不停处理其他事务。自己实践了一下,下面是代码:

import threading, time, sys

def fun1():
    while True:
        print("this is thread 1~!")
        time.sleep(1)
        if quit:
            break
        
quit=0
t=threading.Thread(target=fun1, args=())
t.start()

while True:
    x=input("input please:")
    if x == "exit" :
        quit=1
        break
    else:
        print(x)
    time.sleep(5)

t.join()
sys.exit()

但是,测试下来发现一个严重的问题,当主程序被阻塞在等待用户输入的语句时,子线程也同时被阻塞了而不是预想的在后台继续运行。只有当主程序通过类似于sleep之类的睡眠语句放弃cpu使用权时子线程才能正常运行。所以,想请教各位,这是怎么回事儿?有没有什么解决方案?多谢~!
回复

使用道具 举报

50

主题

1057

帖子

1108

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1108

活跃会员热心会员最佳导师默默耕耘突出贡献优秀版主荣誉管理论坛元老

blueelwang 发表于 2016-4-8 16:24:03 | 显示全部楼层
我测试了,并没有出现你说的,子线程被阻塞的情况(即使去掉了sleep)。
t.join()的作用是: 让主线程一直处于阻塞状态直到所有子线程运行结束。
你可以再尝试一下~~
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表