【问题标题】:Loop within thread-sequential or concurrent?在线程顺序或并发内循环?
【发布时间】:2014-11-26 06:26:00
【问题描述】:

如果我在一个线程中使用 for 和 while 循环并多次启动该线程,那么我的代码会顺序运行还是同时运行? 我正在使用 CentOS-Linux,我想从 eth0:0、eth0:1、eth0:2 等虚拟 IP 地址与 eth0 同时发送 http 请求。我实际上是在尝试使用 python 制作一个流量生成器工具。我使用 cURL 命令将请求从我虚拟生成的 ips 列表(在 sourceip.sh 文件中的 iplist 中写入)发送到我服务器上的多个文件(在 urllist.txt 文件中登记)。我将请求的状态保存在 outputfile.txt 文件中。 现在我想知道的是天气我是否能够实现我的目标?我的代码是按顺序运行还是同时运行?这是我的代码...

【问题讨论】:

    标签: python linux centos python-multithreading


    【解决方案1】:

    它总是顺序的。Python 读取从顶部开始的代码当一个循环完成后,它将在该循环之后开始另一个。

    while ...:
    for .....:
    

    如果是这样,在“while”循环完成后,它会去读取“for”循环。

    while ...:
        for.....:
    

    如果是这样,它将运行“for”循环直到“while”循环完成

    例如:

    a=0
    while a<5:
        a+=1
        print "vys"
    for x in range(1,10)
        print x
    

    这个会打印 vys 5 次,然后它会打印 x 从 1 到 10,比如 1 2 3 4..

    a=0
    while a<5:
        a+=1
        print "vys"
        for x in range(1,10)
            print x
    

    这个会打印 vys 5 次,之后它也会打印 x 5 次。因为它在while循环中,从top开始读取。所以最后一个将从1到10打印x 5次,如1 2 3 4.. 1 2 3 4.. 1 2 3 4..但正如我所说的那样,它是按顺序排列的,所以你会看到这样的代码: vys,1 2 3 4..(5times),vys(4times more)

    【讨论】:

    • 但我多次启动该线程而不等待前一个线程加入.. 那不是并发的吗?
    • 不,我的朋友,它永远不会并发。正如我所说,Python 总是从顶部开始阅读它们
    • 但是线程并发运行对吗?所以如果我在一个线程中使用循环不会是并发的吗?
    • @qqV 我没有看到您的示例开始任何新线程,因为 OP 要求。你能举个例子吗?
    • 不,我的朋友总是按顺序排列。首先,您必须在同一行使用它们,例如我在顶部编写的示例 1 或示例 2。您会看到,示例 2 是不同的。 “for”循环在“while”循环中,这就是为什么这些代码也会打印 x 5 次。因为直到“while”循环完成(这意味着a = 5)它会做任何包括“while”循环的事情
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-05
    • 2011-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-07
    • 1970-01-01
    相关资源
    最近更新 更多