python多线程thread.start_new_thread传参的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python多线程thread.start_new_thread传参的问题相关的知识,希望对你有一定的参考价值。

我的python脚本如下:
#!/usr/bin/python
import thread
import sys
import os
import time

def ssh_cmd(number):   //定义一个ssh_cmd函数 参数为ip 作用是 sleep5秒 然后print 这个ip
time.sleep(5)

print number

thread.start_new_thread(ssh_cmd,(1,))
thread.start_new_thread(ssh_cmd,(2,))
thread.start_new_thread(ssh_cmd,(3,))

然后我用thread.strart_new_thread 但是我执行后 这个脚本瞬间就结束了 什么都没有返回 也没有输出
但是我上网查了 传参没有问题啊 到底是为什么呢
我本意是想让python 开多个线程同时处理任务
求助
参数为number 笔误

因为thread.start_new_thread(ssh_cmd,(3,))开的线程会和主线程一起结束,所以等不到执行print number 程序就结束了 参考技术A

测试如图(Python2.7):

追问

我怎么都不能运行 number打错了 我改成对的 也是不行 

追答

改成对的,传图上来看看错误提示。

追问

我解决了 是版本问题Python3的print是函数 另外我用threading去代替了thread
多谢你得回答

本回答被提问者和网友采纳
参考技术B

因为thread.start_new_thread(ssh_cmd,(3,))开的线程会和主线程一起结束,所以等不到执行print number 程序就结束了。

在使用python多线程的时候,踩到了主线程未等待多线程进程运行完成就结束,导致多线程无效的坑。后来想到自己写个全局变量监控多线程是否全部完成。话不多说,上代码。


unfinished_thread 为全局变量 ,用于记录未完成线程数。

运行结果如下:


线程也叫轻量级进程,是操作系统能够进行运算调度的最小单位,它被包涵在进程之中,是进程中的实际运作单位。

线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源,但它可与同属一个进程的其他线程共享进程所拥有的全部资源。一个线程可以创建和撤销另一个线程,同一个进程中的多个线程之间可以并发执行

以上是关于python多线程thread.start_new_thread传参的问题的主要内容,如果未能解决你的问题,请参考以下文章

python 多线程

python多线程作用

python3.7多线程代码不执行?

python 多线程状态

python多线程探测url地址

python循环怎么用多线程去运行