首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Python进行多线程和事件练习

用Python进行多线程和事件练习
EN

Stack Overflow用户
提问于 2021-12-17 13:31:08
回答 1查看 382关注 0票数 1

“使用两个线程编写程序,其中一个以递增顺序写入偶数,另一个以递增顺序写入奇数。”例如,给出10个我想要的输出

代码语言:javascript
复制
T1-0
T2-1
T1-2
T2-3
...
T1-8
T2-9

我认为应该使用一个事件对象,以便在线程的打印和另一个线程之间交替使用,但是我不知道如何实现它以使它工作,因为我认为我还没有完全掌握处理线程的工具。我把我的错误代码留在这里

代码语言:javascript
复制
import threading

e = threading.Event()


def even(n):
    if e.isSet() == False:
        for i in range(0,n,+2):
            e.set()
            print(i)
            e.clear()
            e.wait()
            
    
def odd(n):
    for i in range(1,n,+2):
        e.wait()
        print(i)
        e.set()
    

t1 = threading.Thread(target = odd, args=(10,))

t2 = threading.Thread(target = even, args=(10,))

t1.start()
t2.start()
t1.join()
t2.join()
EN

回答 1

Stack Overflow用户

发布于 2022-04-25 17:15:20

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

def thread_function(name,max,y):        
    print(name,y)
    time.sleep(0.1)
    for i in range(int(max/2)):
       time.sleep(0.3)
       y= y + 2
       print(name,y)



n = input("Input an integer \n")
n = int(n)
p=0

# Create thread 
mt1 = threading.Thread(target=thread_function, args=("T-Even",n,p))
mt2 = threading.Thread(target=thread_function, args=("T-Odd",n,p+1))
# Start thread
mt1.start()
time.sleep(0.1)
mt2.start()

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

https://stackoverflow.com/questions/70393962

复制
相关文章

相似问题

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