import asyncio import functools async def compute(x, y): print(f'compute:{x}+{y}...') await asyncio.sleep(1) return x + y async def print_sum(x, y): # 创建task task = asyncio.create_task(compute(x, y)) # 底层 # task绑定事件函数 task.add_done_callback(functools.partial(end, x, y)) await asyncio.sleep(1) def end(n, m,t): # result = await compute(x,y) print(f'{n}+{m}={t.result}') if __name__ == '__main__': loop = asyncio.get_event_loop() loop.run_until_complete(print_sum(1, 2)) loop.close()
老师能把这个程序的流程叙述一遍吗 我调试了一下感觉还是不太懂
这里为什么会出现一个b ?
#coding=utf-8 import threading from socket import * import time def ReceiveData(): r = socket(AF_INET,SOCK_DGRAM) r.bind(("192.168.0.104",7890)) if a.acquire(): while True: rec_data = r.recvfrom(1204) print(rec_data[0].decode()) time.sleep(1) b.release() def SendData(): s = socket(AF_INET, SOCK_DGRAM) if b.acquire(): while True: data = input("请输入:") s.sendto(data.encode(), ("192.168.0.104",7890)) time.sleep(1) a.release() if __name__ == "__main__": a = threading.Lock() b = threading.Lock() b.acquire() t1 = threading.Thread(target=ReceiveData) t2 = threading.Thread(target=SendData) t1.start() t2.start()
老师,我写的聊天室的程序,达不到效果,麻烦看一下哪里出错了
老师你好,为什么在pycharm这里会出现这种情况,在vscode就可以正常显示,这个跟python版本没关系吧,我看视频中老师的版本都是3.5之后的。
import asyncio import functools async def compute(x, y): print(f'compute:{x}+{y}....') await asyncio.sleep(1) return x+y async def print_sum(x, y): # 创建task task = asyncio.create_task(compute(x, y)) # task绑定回调函数 task.add_done_callback(functools.partial(end, x, y)) # 释放下cpu的使用 await asyncio.sleep(1) def end(n, m, t): print(f'{n}+{m}={t.result()}') if __name__ == "__main__": loop = asyncio.get_event_loop() loop.run_until_complete(print_sum(1, 2)) loop.close()
老师我想问下,这里的t.result()的作用是什么呢
from time import sleep from threading import Thread #类实现多线程 class MyThread(Thread): def __init__(self,name): Thread.__init__(self) self.name=name def run(self): print(f"Threading:{self.name} start") sleep(3) #创建线程 t1=MyThread('t1') t2=MyThread('t2') #启动线程 t1.start t2.start
我这里运行代码没有反应是怎么回事呢?
from socket import * s=socket(AF_INET,SOCK_DGRAM) s.bind(("",8083)) s.sendto("hello".encode("gb2312"),("172.17.104.155",8080)) sedata=s.recvfrom(1024) print(sedata[0].decode("gb2312")) s.close()
为啥我这个报错呀
from threading import Thread #线程的实线 #方法包装 #创建普通方法 def func1(name): print(f"Threading:{name} start") #创建线程 t1=Thread(target=func1,args=('t1',)) t2=Thread(target=func1,args=('t2',)) #开始线程 t1.start() t2.start() #func1('t1') #func1('t2')
老师没明白这里的next()函数是用来干嘛的??????????????????????????
from threading import Thread,BoundedSemaphore from time import sleep def an_JIan(number): renshu.acquire() print(f"第{number}个人在安检") sleep(3) renshu.release() if __name__ == '__main__': renshu=BoundedSemaphore(3) for x in range(10): t1=Thread(target=an_JIan,args=(f'{x+1}',)) t1.start()
#老师我的运行结果每次不一样是怎么回事呢
'''
第1个人在安检
第2个人在安检
第3个人在安检
第4个人在安检
第6个人在安检
第5个人在安检
第8个人在安检
第7个人在安检
第9个人在安检
第10个人在安检
进程已结束,退出代码为 0
第二种如下:
老师您好
如下图所示,为什么报错threading中没有Thread这个属性呢
老师,请问一下
(1)老师在课程中讲到图1里 说是释放了cpu导致文件被销毁,然后无法执行下去,那在图2里又释放了cpu 却得到了结果,这里我不是很明白,麻烦老师讲解一下.
(2)图3中,那个绑定回调参数,与前面的参数x,y不相同,那他是怎样样调用的呢?传递的原理是怎么样的.
老师,请问全局变量global的声明在函数里声明,和在函数的循环里声明有什么区别
老师第一个问题 关于这个事件 视频中老师举了两个例子 其实还是说明有两个线程 在调用一个方法的时候 可以通过事件event的一个状态来设置什么时候ti这个线程可以进入 什么时候t2这个线程可以进入 不管是车来了还是门开了 都是在说明这个问题 可以这样理解吗
第二个问题 不管车来了还是门开了这两个例子里t1和t2线程 他们是并行还是串行 弄的有点混乱
from threading import Thread,BoundedSemaphore from time import sleep def anjian(num):#num就是要传入的参数 l.acquire() print(f'第{num}个人完成安检') sleep(2) l.release() if __name__=="__main__": l=BoundedSemaphore(3)#里面数字就是 你设置的同时运行的线程数 for i in range(10): t=Thread(target=anjian,args=(f'{i+1}',)) t.start()
老师 请问 为什么运行出来 格式就不整齐了
C:\Users\pcl\venv\Scripts\python.exe "C:/Users/pcl/.1aPython all exercise/线程与进程/信号量.py"
第1个人完成安检
第2个人完成安检
第3个人完成安检
第4个人完成安检
第5个人完成安检第6个人完成安检
第8个人完成安检第9个人完成安检
第7个人完成安检
第10个人完成安检
Process finished with exit code 0
非常抱歉给您带来不好的体验!为了更深入的了解您的学习情况以及遇到的问题,您可以直接拨打投诉热线:
我们将在第一时间处理好您的问题!
关于
课程分类
百战程序员微信公众号
百战程序员微信小程序
©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园网站维护:百战汇智(北京)科技有限公司 京公网安备 11011402011233号 京ICP备18060230号-3 营业执照 经营许可证:京B2-20212637