在这里碰见一个问题:
Linux 中客户端的代码可以和别人 Windows 中服务器的代码可以链接,但是无法下载, 不知道是因为系统是原因还是什么其他原因。
线程练习代码
简单的多任务线程
import threading
import time
def sing():
"""唱歌"""
for i in range(5):
print("---正在唱歌----")
time.sleep(1)
def dance():
"""跳舞"""
for i in range(5):
print("---正在跳舞---")
time.sleep(1)
def main():
# 创建对象
t1 = threading.Thread(target=sing)
t2 = threading.Thread(target=dance)
# 启动子线程
t1.start()
t2.start()
if __name__ == '__main__':
main()
多任务——继承
import threading
"""由继承来实现多任务"""
class MyThread(threading.Thread):
def __init__(self, num): # 重写父类方法
super().__init__()
self.num = num
def run(self): # 重写父类方法
for i in range(self.num):
print(i)
if __name__ == '__main__':
t1 = MyThread(10)
t1.start() # 调用父类中的start方法会创建一个子线程, 子线程会自动调用子类中的run方法
互斥锁解决资源竞争问题
import threading
import time
# 新建全局变量
gl_nums = 0
# 新建锁
# 使用锁来解决资源竞争问题
mutex = threading.Lock()
def test1(num):
global gl_nums
for i in range(num):
# 上锁
mutex.acquire()
gl_nums += 1
# 解锁
mutex.release()
print("----test1 %d----" % gl_nums)
def test2(num):
global gl_nums
for i in range(num):
# 上锁
mutex.acquire()
gl_nums += 1
# 解锁
mutex.release()
print("----test2 %d----" % gl_nums)
def main():
t1 = threading.Thread(target=test1, args=(1000000,))
t2 = threading.Thread(target=test2, args=(1000000,))
t1.start()
t2.start()
time.sleep(2)
print("---main %d----" % gl_nums)
if __name__ == '__main__':
main()
线程听了个迷迷糊糊,把代码多敲几遍吧。。。
刚才吃完饭回来抽空研究了一下如何翻墙,嗯,折腾了一会,成功翻了出去,一直听说墙外的世界很精彩,终于可以一睹真面目了。。。
对于如何翻墙感兴趣的可以联系我。

