首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python线程方法在空闲和py魅力方面有区别吗?

python线程方法在空闲和py魅力方面有区别吗?
EN

Stack Overflow用户
提问于 2017-09-15 06:20:28
回答 1查看 794关注 0票数 4

实际上,我在空闲(Python3.5.2shell)和2017.2中运行和调试这些代码,如下所示。但是当我多次运行代码时,我发现有一些问题使我感到困惑。在py魅力中运行的代码生成以下结果:

  • 线程3处理1线程1处理2线程3处理3线程3处理4线程3处理5线程1处理6线程2处理7线程1处理8

在py魅力中运行的代码生成以下结果:

  • 线程1处理1线程2处理2线程3处理3线程1处理4线程2处理5线程3处理6线程1处理7线程2处理8

正如你所看到的,"1 3 2 3 3 1 1“和"2 3 1 2 3 1 2”。我跑了很多次才找到这个。所以我只想知道,为什么线程方法在不同的IDE中是不同的?你能告诉我一些在Python3?中学习线程的好方法吗?

代码语言:javascript
复制
import queue
import threading
import time

exitFlag = 0


class myThread(threading.Thread):
    def __init__(self, threadID, name, q):
        threading.Thread.__init__(self)
        self.threadID = threadID
        self.name = name
        self.q = q

    def run(self):
        print("Open Thread:" + self.name)
        process_data(self.name, self.q)
        print("Exit Thread:" + self.name)


def process_data(threadName, q):
    while not exitFlag:

        queueLock.acquire()
        if not workQueue.empty():
            data = q.get()
            print("%s processing %s" % (threadName, data))
            queueLock.release()
        else:
            queueLock.release()
        time.sleep(1)


threadList = ["Thread-1", "Thread-2", "Thread-3"]
nameList = ["One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight"]
queueLock = threading.Lock()
workQueue = queue.Queue(10)
threads = []
threadID = 1

for tname in threadList:
    thread = myThread(threadID, tname, workQueue)
    thread.start()
    threads.append(thread)
    threadID += 1

queueLock.acquire()
for word in nameList:
    #print(workQueue.empty())
    workQueue.put(word)
    #time.sleep(1)
queueLock.release()

while not workQueue.empty():
    pass

exitFlag = 1

for t in threads:
    t.join()

print("Exit Main Thread")
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-15 07:48:10

线程不能保证将在中执行任何顺序的,这就是为什么在不同的执行中得到不同的结果的原因。因此,线程不依赖于IDE

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46232940

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档